Вход без пароля с помощью ключей SSH

Материал из Home wiki
Перейти к навигации Перейти к поиску

SSH или Secure Shell является самым популярным и надежным UNIX на основе криптографического сетевого протокола. Он может быть использован для безопасной передачи данных, удаленного входа на сервер, удаленного выполнения команд, а также многих других защищенных сетевых сервисов между двумя сетевыми серверами. Как правило, проверка подлинности пароля используется для подключения к удаленному серверу через SSH. В этом блоге уроке мы покажем вам, как войти на удаленный Linux без ввода пароля, используя ключи SSH. Этот метод является более безопасным, чем с помощью пароля.

Прежде всего, нам нужно сгенерировать открытые и закрытые ключи. Мы будем использовать RSA (Rivest-Shamir-Adleman) криптосистемы.

 ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/root/.ssh/id_rsa): PRESS ENTER
 Enter passphrase (empty for no passphrase): PRESS ENTER
 Enter same passphrase again: PRESS ENTER
 Your identification has been saved in /root/.ssh/id_rsa.
 Your public key has been saved in /root/.ssh/id_rsa.pub.
 The key fingerprint is:
 4a:91:e0:19:89:37:41:ce:3e:ff:56:2c:02:eb:65:cb root@LOCALSERVER
 The key's randomart image is:
 +--[ RSA 2048]----+
 |   o=o           |
 |  .+++ .         |
 |   .=.o          |
 |   ..  .         |
 |    oo. S.       |
 |    .++.. o      |
 |   . +oo o       |
 |    . E..        |
 |       ..        |
 +-----------------+

Это позволит создать 2048 бит открытых и закрытых ключей в каталоге /root/.ssh/ на вашем сервере

 ls /root/.ssh/
 id_rsa  id_rsa.pub

Создайте новый каталог ‘.ssh’ на удаленном сервере

 ssh root@REMOTE_SERVER mkdir -p .ssh

Скопируйте только что созданный ключ на удаленный сервер, на который вы хотите заходить по SSH без пароля

 cat /root/.ssh/id_rsa.pub | ssh root@REMOTE_SERVER 'cat >> /root/.ssh/authorized_keys'

Изменение разрешений для открытого ключа и каталога .ssh

 ssh root@REMOTE_SERVER "chmod 700 .ssh; chmod 600 .ssh/authorized_keys"

Теперь войдите на удаленный сервер и настройте сервер SSH для принятия ключа аутентификации. Откройте файл конфигурации SSH

 nano /etc/ssh/sshd_config

И убедитесь, что следующие три варианта не закомментированы, ‘RSAAuthentication’ и ‘PubkeyAuthentication’ установлены в ‘yes’.

 RSAAuthentication yes
 PubkeyAuthentication yes
 AuthorizedKeysFile      %h/.ssh/authorized_keys

Сохраните изменения и перезапустите сервер SSH

 /etc/init.d/sshd restart

Это все. Вы должны быть войти на удаленный сервер без пароля

 ssh REMOTE_SERVER