Генерация нескольких SSH ключей bitbucket + github

Генерация ssh ключей

Каждый программист рано или поздно узнает о SSH-сервере. И даже если работа с SSH будет заканчиваться на генерации его ключей, все равно нужно знать его основы. Ну или хотя-бы нужно знать как генерировать ключи.

В каких обычно случаях ssh-ключи нужны программисту? Ну например при работе с github или bitbucket. А если вы являетесь сисадмином Linux и до сих пор не знаете как безопасно настроить SSH, стыд вам и срам :), так-как для увеличения безопасности работы с сервером недостаточно настроить файерволл. Если использовать ключи для авторизации на сервере, то безопасность увеличится на порядок.

Итак, представим себе ситуацию, вам нужно сгенерировать пару ключей и залить их на сервер и, чтобы при этом ключи для каждого сервера будь то github или ваш собственный сервер, подхватывался автоматом. Поехали.

Шаг первый - генерируем пару ключей.

ssh-keygen -t rsa -f ~/.ssh/id_rsa.git -C "My RSA key"

Вместо ~/.ssh/id_rsa.git можете написать например ~/.ssh/id_rsa.bitbucket или все что угодно, главное что позже будет понятно какой ключ предназначен для какого сервера.

Шаг два - копируем публичный ключ на удаленный сервер

Копирование SSH ключей на github & bitbucket

cat ~/.ssh/id_rsa.git.pub

Команда выведет сгенерированный ключ в терминале, остается только выделить вывод и добавить его в список своих ssh ключей в настройках на github-е или в bitbucket. Не забудьте вместо id_rsa.git написать название своего файла.

Копирование ssh ключей на свой сервер

ssh-copy-id -i ~/.ssh/id_rsa.git.pub [email protected]

Внимание. Главное, что нужно помнить - только публичными ключами нужно обмениваться с серверами. Публичные ключи можно узнать по приставке .pub, который автоматически прописывается в конце публичного ключа.

Шаг три - настройка ~/.ssh/config

Теперь осталось указать в конфигах SSH ключи, чтобы при команде например ssh github.com вся информация о ключах автоматически подхватывалась из конфигурационного файла.

Для этого нужно создать файл конфигурации SSH клиента:

touch ~/.ssh/config
chmod 600 ~/.ssh/config

А затем нужно написать в только что созданный файл информацию о серверах:

Host github.com
    IdentityFile ~/.ssh/id_rsa.git
    User логин-на-гитхабе
Host bitbucket.org
    IdentityFile ~/.ssh/id_rsa.bitbucket
    User логин-на-bitbucket

Последний шаг - проверить соединение

ssh -t github.com

И на этом все.