- Создать новый git репозиторий
- Добавить в него файл README.md
- Подключить репозиторий к github через deploy ключ
- Написать туда какой-нибудь текст, или стих или песню или мем, ну в общем что нравится то и напишите. Главное чтобы было пара строчек, заголовок и блок с кодом. Оформить текст с использование Markdown https://gist.github.com/Jekins/2bf2d0638163f1294637
И так начнем с такой простой вещи как установка приложений.
В линуксах редко приходится скачивать программу из интернета вручную и ставить ее руками. Как правило все делается через использование специального инструмента для управления пакетами
Называется он apt
(advanced packaging tool). Рассмотрим сразу на примере,
Устанавливаем git
нам точно понадобится git в скором времени, давайте его и поставим
Откроем консольку Windows+T
и напишем
apt install git
увидим в ответ такое:
дело в том, что в линусках все операции с системой должны проходить в режиме суперпользователя (типа админа). Это чем-то напоминает, когда в винде у вас просят подтверждение на выполнение каких-то действий типа
но там у вас окошко выскакивало, а тут что делать?
Для таких действий в убунту доступна специальная команда sudo, которую надо добавлять перед любой другой командой которая требует праву суперпользователя, то есть мы вместо
apt install git
пишем
sudo apt install git
у вас запросят пароль. Мы уже вводили его один раз в прошлом задании. Напоминаю что когда вы начнёте вводить пароль его не будет видно, это так и должно быть, все в целях безопасности, чтобы сосед из-за спины не узнал даже сколько у вас букв в пароле.
если вы дома, то скорее всего у вас запустится установка
если не запустилась попробуйте сначала ввести команду
sudo apt update
она обновит кеш пакетов. Потому снова попробуйте
sudo apt install git
Если и это не помогло. То вы судя по всему в политехе. А там интернет работает через прокси, поэтому надо сделать пару дополнительных операций.
Сначала напишите команду
sudo visudo
затем появится консольный редактор файла. Добавьте в файл строчку
Defaults env_keep = "http_proxy https_proxy ftp_proxy"
теперь сохраните и закройте редактор. Для этого Нажмите Ctrl+O
затем Enter
, затем Ctrl+X
.
Теперь надо ввести еще одну команду перед установкой
export http_proxy="http://172.27.100.5:4444"
команду придется вводить каждый раз перед какими-нибудь действиями с интернетом. И после уже вводим
sudo apt update
sudo apt install git
Ну и ждем
иногда он кстати может спросить какого-нибудь подтверждения типа [Д\н] просто тыкайте Enter
Так, давайте теперь проверим что git установился, напишем
git
и увидим
что означает что все работает как надо.
Создаем репозиторий
Создадим теперь какой-нибудь тестовый проект и попробуем подключить его к github.
Но, так как создавать проект где попало не хочется, давайте сначала поймем где мы вообще находимся. Когда вы работаете из терминала, вы всегда находитесь в какой-то папке.
Чтобы понять в какой, первый способ который приходит в голову это воспользоваться командой ls
чтобы увидеть какие файлы и папки нас окружают. Пишем
ls -la
у меня вывелось вот такое:
синеньким обозначены папки, белым – файлы. Если у вас не совсем похоже на мое, то переживать не стоит, это норма.
Чтобы понять что-за это папка вы можете написать
echo $PWD
$PWD – это так называемся переменная среды, а echo команда которая позволяет выводить значение переменных среды.
PWD значит present working directory (то есть текущий рабочий каталог)
в линуксе целая тьма переменных среды, например, есть переменная в которой указан текущий юзер
echo $USER
получится что-то такое
весь список можно запросить через команду env
Давайте теперь создадим папку под проекты, я назову ее projects, вы можете назвать как вам хочется. Для создания папки используется команда mkdir
теперь зайдем в эту папку, для этого используется команда cd
после которой указывается пусть к папке в которую хотим перейти
cd projects
кстати не обязательно полностью писать пусть вы можете написать часть пути и нажать Tab
и терминал автоматом допишет за вас слово, либо предложит список комбинаций.
Кстати обратите внимание на значок тильды ~
то есть в моем случае в папку /home/m
Создадим теперь гит проект, для этого напишем команду
git init project01
теперь зайдем в папку с проектом
cd project01
и посмотрим, что в ней лежит
ls -la
то есть создавая пустой репозиторий мы по сути просто создаем папку со специальной папкой .git
, кстати если написать просто
ls -l
то мы эту папку не увидим, потому что в линуксе все папки и файлы которые начинаются с точечки являются скрытыми. Как правило в них содержится всякая системная информация.
Теперь создадим файлик README.md с описание проекта.
В линуксе тьма способов создать файл. Самый простой – это команда touch
touch README.md
команда создаст пустой файл. Вообще создание файлов на самом деле не главное назначение файла touch, в основном его используют для манипуляций датами создания/редактирования файла.
Давайте создадим сразу первый коммит, сначала добавим файлик README.md в стейдж
git add README.md
а затем создадим коммит
git commit -a -m "первый коммит"
и получим такую ошибку
дело в том, что сначала надо указать свое имя и почту, которые будут использоваться при указании авторства коммита в истории.
Собственно, список команд тут и указан, прописываем почту и пользователя
и пробуем сделать коммит по новой. Кстати, чтобы не вводить команду по новой, просто понажимайте клавишу вверху, и у вас начнется перебираться список последних комманд:
И теперь подключим наш проект к гитхабу.
Подключаемся к github
Идем на github и создаем новый репозиторий
теперь подключим папку к проекту, тыкаем вверху кнопочку ssh
и выполним вот эти команды которые предлагает нам github
при выполнении последней команды увидим такое сообщение
Если у вас выплыло какое-нибудь другое сообщение, то это значит что вы в политехе, а там заблочен ssh. Скажите об этом мне, и я скажу что делать.
Подключаемся к github по ssh
Подключая репозиторий, github по умолчанию предлагает использовать ssh протокол для общения клиента с сервером.
В этом случае авторизация происходит не по логину/паролю, а через пару цифровых ключей.
И вот это сообщение которое тут всплыло у нас пока просто спрашивает, стоит ли нам считать сервер github доверенным.
Тут мы пишем в ответ yes
, но так как цифрового ключа мы пока не создавали, то команда отправки на сервер не сработает:
И так давайте создадим ключик для подключения.
Авторизация через ключи прикольнее чем авторизация черз юзер пароль.
Во-первых ее практически не возможно взломать, методы перебора там не работают.
Ключи создаются один раз и потом на автомате подхватываются при авторизации, не надо вводить никакие пароли.
Собственно, создается два ключа публичный и приватный. Приватный лежит у вас на компьютере и его по идее никто не должен видеть. Публичный ключ отправляется на гитхаб.
Если грубо, то с помощью приватного ключа соединение шифруется на вашем компе и в зашифрованном виде запрос отправляется на гитхаб. Гитхаб с помощью публичного ключа расшифровывает запрос и выполняет команду, то есть тот самый push. На самом деле там немножко сложнее, в процессе общения по ssh протоколу, создаются дополнительные ключи для шифрования, но это уже к безопасниками.
Создаем пару ssh-ключей
И так давайте создадим ключики. Для этого используется команда ssh-keygen
В качестве параметра указывается тип ключа, github рекомендуем использовать схему ed25519
https://ru.wikipedia.org/wiki/EdDSA так что ее и будем использовать, пишем
ssh-keygen -t ed25519
далее вас попросят ввести путь к файлу с ключами, ключи обязательно должны лежать в папке .ssh
в домашней директории, которую можно узнать через команду
echo $HOME
ну либо просто запомнить, что ваша домашняя директория – это всегда /home/имя_вашего_пользователя
, в моем случае будет /home/m
, то есть я для пути к ключу укажу
/home/m/.ssh/linux_project01
вас еще попросят ввести парафразу (это пароль для ключа), но ее можно просто оставить пустой, то есть два раза тыкнуть enter, в результате увидим что-то такое:
кстати картиночка в конце которую вы видите это визуальное представление ключа. Алгоритм генерации можно почитать тут https://russianblogs.com/article/8271690010/.
Опять же нужна для случаев, когда люди серьезно озабочены безопасностью и при каждом соединении с удалённым сервером у них включен режим выводить это картинку. Цель – визуально запомнить, как выглядит ключ, и если произошла подмена ключа, то картинка поменяется, а оператор должен среагировать на это – ну, как минимум, заподозрить что-то не ладное.
Теперь давайте глянем что-за файлики сгенерились:
ls ~/.ssh -la
так как мы владельцы то можно глянуть содержимое файлов. Тот файл, который заканчивается на .pub – это публичный ключ, давайте выведем его содержимое. Самая простая команда для вывода текста из файла называется cat
cat ~/.ssh/linux_project01.pub
увидим его содержимое
теперь глянем содержимое приватного ключа, это тот, который без расширения
его нельзя никому показывать =О
Подключаем ключи к github
Так, теперь надо подключить ключи к github. Мы будем использовать так называемые deploy ключи, которые позволяют создавать отдельный ключ под каждый репозиторий, идем сюда и тыкаем add deploy key
и добавляем ключ
теперь надо подключить этот ключ в линуксе. Чтобы гит понял, что ему надо использовать эти ключи для соединения их надо прописать в конфигах ssh. Подробнее это описано тут https://docs.github.com/en/developers/overview/managing-deploy-keys#using-multiple-repositories-on-one-server
Интересуют нас вот эти строки:
То есть нам надо создать файлик ~/.ssh/config, создавать мы уже умеем, давайте переместимся в папку ~/.ssh
cd ~/.ssh
и создадим файл, уже с помощью известной нам команды touch
Теперь собственно вопрос, а как его редактировать?
Для этого есть еще одна программка, встроенная в линукс котораят называется nano
, это мини редактор текста, пользоваться им тоже очень легко, просто пишем nano имя_файла
.
Вводим
nano config
и видим
пишем туда, как будто это простой текстовый файл
Host github.com
IdentityFile=~/.ssh/linux_project01
и теперь надо сохранить результат. Внизу редактора указан список горячих клавиш. Нам интересна вот эта:
тыкаем Ctrl+O
и жмем Enter
Все теперь можем выйти из редактора. Для выхода надо нажать Ctrl+X
теперь вернемся в папку с репозиторием
cd ~/projects/project01/
и попробуем снова команду
git push -u origin main
хм, чего-то не работает…
А! Если прочитать ошибку, то увидим что там написано:
Bad owner or permissions on /home/m/.ssh/config
Тут дело в том, что создав файлик config мы не настроили ему права доступа.
Давайте еще раз глянем содержимое папки .ssh
ls ~/.ssh -la
чтобы поменять права доступа к файлу используется команда chmod
, мы еще разберем ее попозже. Но в общем если хотите закрыть доступ к файлу всем кроме пользователям надо написать следующую команду
chmod 600 ~/.ssh/config
пробуем еще раз отправить наш репозиторий в github
git push -u origin main
о, поехало:
красота =)