В этой записи, я расскажу как создать новый SSH ключ и вкратце расскажу для чего он нужен, чтобы вы понимали почему такие сервисы как Bitbucket, Github и многие другие спрашивают их у вас.
Что такое SSH и для чего нужны ключи?
SSH — это аббревиатура для Secure Shell, используется для удаленного управления Linux сервером (запускать консольный команды и т.д.).
По старинке вы можете постоянно указывать пароль при подключении к удаленному серверу, но это не безопасно, так как пароль может быть перехвачен. Для таких случаем были придумали публичные и приватный ключи — их можете сгенерировать используя ssh-keygen
.
После генерации ключа вы получаете две версии — публичная и приватная.
- Публичным ключом вы можете делиться с сервисами (например, Bitbucket, GitHib и др.), которые от вас их требует.
- Приватный всегда остается у вас. Никогда не делитесь этим ключом, так как это тоже самое, что если бы я у вас спросил пароль от вашего VK аккаунта и если у кого-то он будет, то они могут зайти везде где вы используете публичный ключ. Допустим, если вы указали публичный ключ на Bitbucket, то используя ваш приватный ключ, я могу зайти по SSH и делать не очень приятный для вас вещи, по типу управления файлами вашего проекта и аккаунта. Я не думаю, что вы этого действительно хотите.
Подробнее о генерации ключей читайте ниже.
Генерация ключа
- Откройте терминал
- Впишите команду ниже, чтобы создать новый SSH ключ и «Мой ключ» как лейбл, чтобы в будущем вам было проще запомнить от чего этот ключ.
$ cd ~/.ssh && ssh-keygen -t rsa -b 4096 -C "Мой ключ"
Если у вас выдает ошибку, попробуйте сначала создать .ssh директорию следующей командой —
mkdir ~/.ssh/
и потом снова повторить команду выше. Если ошибка все равно есть, опишите её в комментариях ниже, я постараюсь вам помочь.
- Далее вам должно вывестись:
Generating public/private rsa key pair. Enter file in which to save the key (/home/<ваш_пользователь>/.ssh/id_rsa):
Где
id_rsa
— это стандартной название файла ключа, вы можете указатьmykey
. - На вопрос о «Enter passphrase (empty for no passphrase):» (с англ. введите фразу, оставьте пустым, если не хотите ничего указывать), нажмите
Enter
, чтобы пропустить этот этап, он не такой важный. У вас так же спросит о повторении «фразы», тут тоже нажмитеEnter
. - В конце у вас должно вывести, что-то похоже на это:
Your identification has been saved in mykey. Your public key has been saved in mykey.pub. The key fingerprint is: d9:e7:33:6b:c1:46:11:3a:f6:ca:d3:5f:b7:47:39:11 Мой ключ The key's randomart image is: +--[ RSA 4096]----+ | .. | | .. | | + .. | | + o.E . | | S .oo .| | . =+ o.| | +.=. .=| | ..= .+| | .. .o.| +-----------------+
Это означает, что публичный (
mykey.pub
) и приватный ключ (mykey
) были созданы.Вы никогда и никому не должны предоставлять свой приватный ключ, он должен быть только у вас. Публичный ключ — это как раз то, чем вы делитесь, чтобы они понимали, что вы — это вы.
Где хранятся ключи?
По умолчания для этого есть специальная скрытая папка .ssh
, которую можно найти тут: /home/<ваш_пользователь>/.ssh/
. Если ее нет, значит раньше вы еще не создавали ключи.
Лучше всего хранить ключи именно в этой папке, чтобы потом не забывать их местонахождение.
Тем самым, когда мы создаете новый ключ, лучше сначала перейти в .ssh директорию:
$ cd ~/.ssh
И уже потом генерировать ключи.
Как получить содержимое ключа через консоль?
Очень просто, используй команду cat
для этого:
$ cat mykey.pub
Где mykey.pub
— это название файла. Файл может быть почти любого формата.
Пример ответа будет следующий:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCr6XoQqS6ZfpHx3IweEoRQgV/9nCzkfdS5fdatzPQeOLcC/jdSFXu0ctbudbWzLWbUmrzCScnLXIdzuz7lDN7HLaSCbVnvmp+b4Xe2Y8EgiXzHwCqnDB7yQHxMo6KFqK3PDYHhwQu+wMo8ofXhfdiClvL6HHplDCR1/Rzs2UpmUJpPRRerOqghJP213DNj/ujH6CzuR96FfGOdrlT0uTqcREpUPOKYNsb+kp6WyC6z7IUDzYYEzwjdGngITGKVTC2iN+BCe2LYe2liNT2ZBsY+6CYTyPlW4Ok7ku8acDUSQy0U7Z0BpYaOmq1H1CYa4mVo/GG7xY2zgrZXz7nzdFJ1 mykey