С ssh ключами удобно заходить на сервер без пароля и они нужны при коммитах в git по ssh.
SSH-ключи представляют собой пару — закрытый и открытый ключ. Закрытый должен храниться в закрытом доступе у клиента, открытый отправляется на сервер и размещается в файле authorized_keys.
При выполнении команды ssh [email protected]
клиент устанавливает связь с сервером, подписывая сообщение приватным ключом, сервер (расшифровав его с помощью публичного из ~/.ssh/authorized_keys
) понимает, что это доверенный пользователь и даёт доступ без запроса пароля.
Генерировать ключи можно на локальной машине и копировать публичный на сервер или наоборот - на сервере и скопировать приватный с сервера себе на компьютер.
ssh-keygen -t rsa
На все вопросы жмите enter
, кодовая фраза не нужна. По итогу у нас появятся 2 файла:
~/.ssh/id_rsa
- приватный ключ~/.ssh/id_rsa.pub
- публичный ключ
- Если у вас Linux и ключи генерировали на клиенте, можно воспользоваться специальной утилитой
ssh-copy-id [email protected]
Последует запрос пароля, ключ перепишется, и на сервер можно заходить без ввода пароля.
- Если ключи генерировали на сервере, создаем
authorized_keys
:
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
Если у вас уже есть authorized_keys
уже есть (в нём могут храниться несколько ключей), то нужно добавить ключ в его конец:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Далее копируем приватный ключ на клиента в каталог ~.ssh (для Windows это c:\Users\your_Windows_login\.ssh
)
Пробуем зайти по ssh (при первом входе ответить yes). По умолчанию берется приватный ключ ~/.ssh/id_rsa
:
ssh [email protected]
Если ssh ключей и серверов много, можно заходит, задать к нему путь:
ssh -i ~/.ssh/server.pem [email protected]
Чтобы зайти по ключу через PuTTY, ключ надо преобразовать в формат PuttY
утилитой puttygen.exe
, которая идет вместе с PuTTY: Load -> All Files(*.*) -> Save private key
и загрузить сгенерированный ключ в сессию PuTTY:
После этого нужно вернуться на вкладку Session
и сделать Save
Если ssh проходит, но не работает puttygen, мне помогло обновление на последюю версию.
Если не получилось залогинится, попробуйте сгенерировать ключи еще раз другим способом и/или воспользоваться дебагом:
ssh -vvv [email protected]
Проверьте права на .ssh
и файлы и настройки sshd_config
:
cat /etc/ssh/sshd_config | grep PubkeyAcceptedKeyTypes
Если пусто - нужно добавить разрешение и рестартануть sshd
:
echo "PubkeyAcceptedKeyTypes *" | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart sshd.service
Пляски с бубном если не получается зайти по ключам. В крайнем случае у хостинга есть поддержка.