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

Беспарольный ssh достаточно частое явление в жизни системного администратора unix. Я бы даже сказал, что такое соединение в какой-то степени более надежное чем вход по паролю. Ведь пароль можно подсмотреть или просто подобрать. А при беспарольном соединении на сервере должен находиться публичный ключ, а на клиенте секретный ключ. Вход без ключа отключить. И тогда если у тебя нет ключика на сервер и не попасть по ssh :)
А еще можно связку ключ-публичный ключ обезопасить парольной фразой, тогда точно авторизация ssh будет криптостойкой.

Генерируем пару ключей для такого ssh соединения. Выполнять команду будем на клиенте (на той машине откуда будем выполнять ssh соединение), ведь именно тут будет храниться наш секретный ключ. Убедимся что директория .ssh создана в вашем домашнем каталоге и имеет права 600. Теперь выполняем

mik@m1k:~$ ssh-keygen -t dsa -b 1024 -f /home/user/.ssh/id_dsa
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
95:e8:94:83:74:5c:63:0a:e1:4d:6d:77:30:86:aa:7b mik@m1k
The key's randomart image is:
+--[ DSA 1024]----+
|      +ooo+.+.   |
|     o *.=++...  |
|      o Boo. .   |
|       o.o       |
|       .S        |
|      .          |
|       .         |
|      . E        |
|       .         |
+-----------------+

Парольную фразу не указываем, нажимаем Enter.

  • -t dsa — тип ключа. Есть rsa и dsa. Dsa это для второй версии ssh, которая сейчас везде по умолчанию. Rsa  — первая версия ssh.
  • -b 1024 длина ключа
  • -f /home/user/.ssh/id_dsa — каталог где будет сохранен ключ id_dsa и его публичный ключ id_dsa.pub

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

Теперь надо изменить конфигурацию ssh сервера (файл /etc/ssh/sshd_config) той машины куда мы перенесли публичный ключ. Раскомментируем строки по которым мы разрешим использовать ключи, запретим логиниться по ssh пользователю root.

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PermitRootLogin no

Обязательно после изменения конфига ssh перезапускаем сервер ssh. Для linux и freebsd можно использовать команду

#killall -HUP /usr/sbin/sshd

Возвращаемся к нашему публичному ключу. Переименовываем ключ id_dsa.pub в файл authorized_keys, назначаем файлу правами 600 и оставляем файл в папке /home/user/.ssh.

Пробуем соединиться с нашей машины

mik@m1k:~# ssh -i /home/user/.ssh/id_dsa user@192.168.0.1
The authenticity of host '[192.168.0.1]:22 ([192.168.0.1]:22)' 
can't be established.
RSA key fingerprint is be:68:fe:64:bb:62:d6:d8:a9:62:3e:76:17:85:76:94.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.0.1]:22,[192.168.0.1]:22'
 (RSA) to the list of known hosts.
Last login: Thu Jul 29 11:12:22 2010 from mik.localhost
Linux 2.6.29.6-gw-smp.
mik@gw:~$

Первый раз спросит подтверждение на соединение. После ответа yes мы должны попасть на удаленную машины безо всякого пароля.
Кстати, в вышепреведенном случае местоположение нашего секретного ключа «-i /home/user/.ssh/id_dsa» можем не указывать. Я специально назвал его id_dsa, что является названием по умолчанию. При указании другого файла, например для соединения со второй машиной по ключу, получится что название по умолчанию id_dsa уже занято. Так что будьте готовы что для конкретного соединения надо будет указывать свой ключ.

Если в конфиге sshd_config на удаленной машине, где мы уже правили конфиг, выставить

UsePAM no

Тогда уже, кроме как по ключу, попасть на эту машину и не сможем.

Наверное вы уже поняли, что если при создании ключа набрать парольную фразу, тогда при соединении с машиной от вас будет требоваться парольная фраза. Остальные действия с ключами аналогичные.
И теперь помните, если хотите заходить на сервер с разных компьютеров, то на каждый компьютер надо переносить id_dsa секретный ключ. Я бы рекомендовал носить его на флешке, а флешку не терять ;)

Оригинал: ruunix.ru/642-ssh-bez-paroly-ili-po-kluchu.html

Запись опубликована в рубрике *CentOS, *Unix,*Linux, FreeBSD. Добавьте в закладки постоянную ссылку.

Один комментарий на «SSH авторизация без пароля или по ключу»

  1. Eugen говорит:

    ssh-keygen -t rsa -b 4096 -f /home/user/.ssh/id_rsa_key

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91