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
Добавить комментарий

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