- Создать новый git репозиторий
- Добавить в него файл README.md
- Подключить репозиторий к github через deploy ключ
- Написать туда какой-нибудь текст, или стих или песню или мем, ну в общем что нравится то и напишите. Главное чтобы было пара строчек, заголовок и блок с кодом. Оформить текст с использование Markdown https://gist.github.com/Jekins/2bf2d0638163f1294637
Основы работы с терминалом / Подключение github репозитория по ssh
И так начнем с такой простой вещи как установка приложений.
В линуксах редко приходится скачивать программу из интернета вручную и ставить ее руками. Как правило все делается через использование специального инструмента для управления пакетами
Называется он apt
(advanced packaging tool). Рассмотрим сразу на примере,
Устанавливаем git
нам точно понадобится git в скором времени, давайте его и поставим
Откроем консольку Ctrl+Alt+T
и напишем
apt install git
увидим в ответ такое:
дело в том, что в линусках все операции с системой должны проходить в режиме суперпользователя (типа админа). Это чем-то напоминает, когда в винде у вас просят подтверждение на выполнение каких-то действий типа
но там у вас окошко выскакивало, а тут что делать?
Для таких действий в убунту доступна специальная команда sudo, которую надо добавлять перед любой другой командой которая требует праву суперпользователя, то есть мы вместо
apt install git
пишем
sudo apt install git
давайте попробуем
тут получается другая проблема, современные убунты постоянно пытаются обновится. И чтобы не получилось так что сразу два приложения одновременно выполняют установку блокируются операция с системой.
Давайте отключим это автообновление. Идем сюда
далее у вас запросят пароль который указывался при установке системы.
если вы используете мой образ, то у меня там был 123
,
откроется окошко, в котором идем в updates и снимаем вот эту галочку (а можно в принципе и все галочки снять)
и тыкаем close
И теперь давайте перезагрузимся. Можно конечно через меню пуск, а можно прямо в консольке написать
sudo reboot
он кстати может немного долго выключаться, так как будет пытаться доустановить обновления, которые он качал
Открываем консольку Ctrl+Alt+T
и пишем:
Так как в политехе интернет работает через прокси поэтому надо ввести еще одну команду перед установкой
export http_proxy="http://172.27.100.5:4444"
и после уже вводим
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 и создаем новый репозиторий
теперь подключим папку к проекту, выполним вот эти команды которые предлагает нам 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
о, поехало:
красота =)