Блог

Как установить SSH-ключ на GitHub

Для того, чтобы получить доступ к репозиторию на ГитХабе по ssh, прежде всего необходимо создать сам аккаунт.

Далее, после авторизации необходимо перейти в настройки аккаунта (кликнуть на значок своего аватара в правом верхнему углу экрана и выбрать пункт settings) --> SSH and GPG keys), и далее кликнуть кнопку New SSH key (тоже справа вверху).

Теперь в эти два открывшихся поля (Title и Key) необходимо вставить название ключа (любое) и код публичной части самого ключа (скопировать содержимое ключа).

Где их взять? Прежде всего есть смысл проверить, не сгенерировали ли вы свой ключ раньше и просто забыли об этом. Для этого надо перейти в папку Home и поискать там ключи в скрытой папке .ssh (предварительно в Навигаторе надо добавить возможность просмотра скрытых файлов). Другой способ обнаружить эту папку - через окно терминала по команде:

$ ls -al ~/.ssh

Если ключи есть, то мы увидим, как минимум, 4 строки текста

drwx------ 2 su su 4096 сеп 24 23:24 .
drwxr-xr-x 23 su su 4096 сеп 24 23:24 ..
-rw------- 1 su su 419 сеп 24 23:24 id_ed25519
-rw-r--r-- 1 su su 104 сеп 24 23:24 id_ed25519.pub

Ну, а если нет - то только две верхних. В этом случае, ключи нам придётся сгенерировать самостоятельно:

$ ssh-keygen -t ed25519 -C "my_email@example.com"

Система сообщит о начале процесса генерации и уточнит, под каким именем следует сохранить файл с ключом:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/su/.ssh/id_ed25519):

Просто соглашаемся (Enter).

Далее система сообщит о создании директории .ssh и предложит ввести фразу для пароля (вводить не обязательно):

Created directory '/home/su/.ssh'.
Enter passphrase (empty for no passphrase):

Если ввели пароль, то следующим шагом потребуется ввести подтверждение, если - нет, то просто нажмите Enter.

И в результате пароль будет сформирован и на экран будет выведено что-то вроде этого:

Enter same passphrase again:
Your identification has been saved in /home/su/.ssh/id_ed25519
Your public key has been saved in /home/su/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:FOkr66ZIZN5eTZ1omlY77s1GkgZtWa+A3NNDwEKCzcE my_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
| =oo..oo |
| . E.. o.o |
| . *.= . |
| +.Ooo.. |
| o oS=oo |
| + . .B=.o |
| o . =++o |
| . o oo. +. |
| . o+..o.o |
+----[SHA256]-----+

Теперь необходимо перейти в папку .ssh и скопировать публичную часть ключа, которая находится в файле с расширением: .pud (id_ed25519.pub).

Содержимое именно этого файла нам надо скопировать и вставить в поле Key экрана настройки ключей на ГитХабе. Далее необходимо придумать имя для этого ключа (на случай если ключей будет несколько) и ввести это имя в поле Title. После заполнения обоих полей и нажатия кнопки Add SSH key, добавление ключа можно считать завершённым. И теперь неплохо бы было убедиться, что всё работает.

Для этого мы создадим в нашем репозитории тестовый проект, скопируем его на локальную машину, попробуем внести в наш проект изменения и "запушить" результат в репозиторий.

Нажимает "плюс" слева от аватара в верхнем правом углу ГитХаба, между "колокольчиком" и аватаром --> New repository

Далее, в открывшейся странице вводим имя проекта под Repository name, пишем несколько слов о проекте в разделе Description, отмечаем "добавить" для Add a README file и Add .gitignore, и в вариантах ".gitignore" выбираем Python. И в завершении всего нажимаем Create repository.

Проект создан, и теперь мы копируем его в папку на локальном компьютере, для чего в переключателе HTTPS / SSH выбираем последнее и копируем ссылку на наш только что созданный проект в репозитории ГитХаба.

Но перед тем, как скопировать, необходимо убедиться, установлен ли на нашим компьютере пакет git. Это можно сделать командой:

$ git --version

Если же окажется, что git не установлен, то применяем следующие команды;

$ sudo apt-get update
$ sudo apt-get install git

Теперь, непосредственно в той папке, где мы хотим разместить этот проект, открываем окно терминала (правая кнопка мыши --> "Open in Terminal"), и далее, в самом терминале вводим:

$ git clone git@github.com:it4each/my-project.git

При первом клонировании скорее всего мы получим что-то вроде этого:

Cloning into 'my-project'...
The authenticity of host 'github.com (140.82.121.4)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Отвечаем yes и проект успешно добавляется в указанную папку на нашем компьютере. Кроме того, адрес ГитХаба добавился в список известных хостов (см. далее).

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,140.82.121.4' (RSA) to the list of known hosts.
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.

И если мы теперь ещё раз исследуем содержимое папку ключей, то увидим в ней новый файл (known_hosts) с со списком известных хостов, куда добавлен и хост ГитХаба:

$ ls -al ~/.ssh drwx------ 2 su su 4096 сеп 25 10:49 .
drwxr-xr-x 23 su su 4096 сеп 24 23:39 ..
-rw------- 1 su su 411 сеп 24 23:43 id_ed25519
-rw-r--r-- 1 su su 102 сеп 24 23:43 id_ed25519.pub
-rw-r--r-- 1 su su 884 сеп 25 10:49 known_hosts

Теперь, для работы проекта нам необходимо создать виртуальное окружение. Для этого необходимо наличие пакетов pip3 и virtualenv. Если эти пакеты ещё не установлены, используем команды:

# install pip3
$ sudo apt-get install python3-pip  

# install virtual environment
$ sudo pip3 install virtualenv

Для создания виртуального окружения необходимо перейти в папку проекта и затем запустить команду установки:

$ cd my-project

$ virtualenv venv -p python3

Виртуальное окружение создано. Теперь его необходимо запустить:

user@user:~/Projects/django-app/my-project$ source venv/bin/activate

(venv) user@user:~/Projects/django-app/my-project$

Доказательство того, что виртуальное окружение запущено - появление в ответе системы папки venv в круглых скобках - (venv).

Устанавливаем первый пакет - пакет Django. И сразу же после его установки создаём новый проект (чтобы создать его внутри папки проекта, в конец команды добавляем точку):

$ pip3 install Django

$ django-admin startproject main .

Все установленные пакеты запоминаем в файле requirements.txt:

$ pip3 freeze > requirements.txt

Теперь в нашей папке уже достаточно файлов для того, чтобы сделать первый коммит и сохранить проделанную работу в репозитории ГитХаба. Для этого сначала добавляем все созданные файлы командой add --all, затем создаём коммит commit и отправляем этот коммит в репозиторий командой push:

$ git add --all

$ git commit -am "first commit"

$ git push

Если всё прошло без ошибок, то в репозиторий должны добавиться следующие файлы:

[main 0a792bb] first commit
7 files changed, 200 insertions(+)
create mode 100644 main/__init__.py
create mode 100644 main/asgi.py
create mode 100644 main/settings.py
create mode 100644 main/urls.py
create mode 100644 main/wsgi.py
create mode 100755 manage.py
create mode 100644 requirements.txt

Обратите внимание, что самая большая по объёму папка нашего проекта - папка виртуального окружения venv в репозиторий не попала, поскольку по умолчанию находится в файле .gitignore - в списке файлов-исключений для копирования в удалённое хранилище. Если помните, добавить этот файл нам предложил ГитХаб при создании проекта my-project.

Следует заметить, что папки .idea для служебных файлов PyCharm в .gitignore нет. Поэтому, если вы будете использовать в создании вашего проекта эту IDE - не забудьте добавить исключение папки .idea самостоятельно.

Дополнительную информацию о добавлении SSH ключа и создании проекта можно получить из этого видео: