SSH авторизация без пароля или по ключу

На локальной машине (OS Linux) генерируем ключ:

# ssh-keygen -t rsa -b 2048 -f /home/user/.ssh/id_rsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
95:e8:94:83:74:5c:63:0a:e1:4d:6d:77:30:86:aa:7b user@u1zer
The key's randomart image is:
+--[ RSA 2048]----+
| +ooo+.+. |
| o *.=++... |
| o Boo. . |
| o.o |
| .S |
| . |
| . |
| . E |
| . |
+-----------------+
-t rsa — тип ключа. Есть rsa и dsa.
-b 2048 длина ключа
-f /home/user/.ssh/id_rsa — каталог где будет сохранен ключ id_rsa и его публичный ключ id_rsa.pub
-N '' - позволяет указать ключевую фразу в строчке, в данном случае парольная фраза пустая

Получаем два файла id_rsa и id_rsa.pub. PUB ключ — это публичный, а id_dsa секретный. Переносим файл id_rsa.pub на сервер, куда мы будем подключаться в директорию /home/user/.ssh/ того пользователя под которым мы будем соединяться по ssh.

Копирование файла с ключом на удалённый наш сервер.

ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168.1.96

Добавляем на локальную машину ключ

 ssh-add id_rsa

(Без этого шага у меня не получалось подключиться к ssh по сертификату)

Настройки на сервере

После создания пары ключей, приватный — остается у пользователя в секрете, а публичный необходимо положить в домашнюю директорию пользователя, в файл ~/.ssh/authorized_keys

Меняем права на каталог и на файл:

# chown -R user /home/user/.ssh
# chmod 700 /home/user/.ssh/
# chmod 600 /home/user/.ssh/authorized_keys

Также убедитесь что на сервере разрешена авторизация по ключу, для этого в файле /etc/ssh/sshd_config должны быть строки:

RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys

Если наш пользователь будет совсем без пароля, то для этого нужно в файле /etc/shadow заменить хеш пользовательского пароля на символ *. Пример (cat /etc/shadow) :

user:*:13783:0:99999:7:::

А если на сервере вообще хотим запретить авторизацию по паролям, выставляем параметр в /etc/ssh/sshd_config:

PasswordAuthentication no
PermitEmptyPasswords no

После всего этого можно и сделать проверку на локальной машине:

# ssh git@192.168.1.96

На локальной Windows-машине
Надо утилитой puttygen сконвертировать открытый ключ в свой формат, и в настройках putty указать этот сконвертированный файл

Максим Макаров

У блога появился хостинг, его любезно предоставила компания Облакотека. Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс.

Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.