Работа с приватными репозиториями Github
В этой статье вашему вниманию будет представлена инструкция по работе с приватными репозиториями Github.com на виртуальном хостинге.
Почему именно с приватными репозиториями? Все просто, потому, что при работе с открытыми (публичными) репозиториями вам не нужно делать дополнительные шаги безопасности, такие как: генерация SSH ключей, авторизация SSH в GitHub, генерации токена безопасности и т.д.
Ниже, вам представлена сама инструкция:
- Подключаемся по ssh
- Выполняем команду:
ssh-keygen -t rsa -f ~/.ssh/sshkeygit -b 4096 -C "username@github.com"
где:- sshkeygit — это название вашего ключа, который создается. Вы можете указать любое название
- username — это имя вашего пользователя на сайте github.com
- Далее вас просят указать пароль от ключа:
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
- Далее вас просят повторить пароль от ключа:
Enter same passphrase again:
- Если все успешно, вы увидите следующий результат:
Your identification has been saved in /home/username/.ssh/sshkeygit.
Your public key has been saved in /home/username/.ssh/sshkeygit.pub.
The key fingerprint is:
SHA256:3tC2vvn9e8xDIZnEDoZHfXguFtKX2ZCLD9gKeauHN68 username@github.com
The key's randomart image is:
+---[RSA 4096]----+
| o.+ oo+|
| . = B.*.|
| .oo=.O. |
| o.o +B.o |
| Sooo.oo .|
| . +o. .. |
| .oo .o |
| o.+. . .+|
| oE*o .o=|
+----[SHA256]-----+
- Далее выполняем команду:
cat .ssh/sshkeygit.pub
- Получаем содержимое публичного ключа и копируем его:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkbQWMIkB0AGEvA6yw/5Yj2WEJ+RQVbOkVl2FVXQDvMDZl5RORJIOMYKACNhi2
...
fcBARShsniGOnd/YTpKqAO3IjkbPewOnUf/DaePC6b8aDbngucJoxqbXZxMWueAFzaP+eyo6lzctrw== username@github.com
- Переходим на сайт Github.com — авторизуемся на сайте — переходим в Setting — далее в раздел SSH and GPG keys — в блоке SSH keys нажимаем на кнопку New SSH key — вставляем содержимое из пункта 2
- Возвращаемся в терминал и проверяем соединение, выполнив команду:
ssh -i .ssh/sshkeygit -T git@github.com
- Видим следующее сообщение:
The authenticity of host 'github.com (140.82.121.3)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
ECDSA key fingerprint is MD5:7b:99:81:1e:4c:91:a5:0d:5a:2e:2e:80:13:3f:24:ca.
Are you sure you want to continue connecting (yes/no)?
- Пишем «yes«, жмем Enter и видим следующее сообщение:
Enter passphrase for key '.ssh/sshkeygit':
- Пишем пароль, который указывали на первом шаге. Если все сделали правильно, вы увидите следующий ответ:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
- Это означает, что у вас все хорошо и почти все готово для работы с Github. Почему «почти»? Разберем на следующем шаге.
- Видим следующее сообщение:
- Если вы сейчас попробуете клонировать репозиторий, выполнив команду:
git clone https://github.com/username/blog.git
- Вы получите следующее сообщение:
Клонирование в «blog»…
- Далее вас попросят ввести логин и пароль с сайта Github:
Username for 'https://github.com':
Password for 'https://username@github.com':
- Но вместо клонирования репозитория вы увидите следующее предупреждение и ошибку:
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/username/blog.git/'
- Вы получите следующее сообщение:
- Для того чтобы выполнить клонирование репозитория, перейдите на сайт Github.com в настройки вашего аккаунта — далее перейдите в раздел Developer settings — далее в Personal access tokens и нажмите на кнопку Generate new tokenДля того чтобы создать токен, заполните следующие поля:
- заполнение поля Note
- выбор времени жизни токена Expiration
- выбор области действия токена Select scopes, для данной инструкции хватит секции «repo«
- для создания токена нажимаем на кнопку Generate token
В разделе «Personal access tokens» будет виден созданный токен: ghp_jo0VFGSoG002PxLXO7uDEg8juFW3JT48iZ9Q (это не работающий пример)
Скопируйте его и перейдите в обратно в терминал, в котором вы подключены по ssh к хостингу.
- Теперь вы можете выполнить команду клонирования, но она будет иметь следующий вид:
git clone https://<username>:<githubtoken>@github.com/<username>/<repositoryname>.git
- На примере, команда будет выглядеть следующим образом:
git clone https://git:ghp_jo0VFGSoG002PxLXO7uDEg8juFW3JT48iZ9Q@github.com/username/blog.git
- обратите внимание, что username, который идет после https:// — должен быть git
- если вы сделали все верно, вы получите следующий ответ:
Клонирование в «blog»…
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Получение объектов: 100% (3/3), готово.
- На примере, команда будет выглядеть следующим образом: