Беспарольный 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 [email protected] 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
ssh-keygen -t rsa -b 4096 -f /home/user/.ssh/id_rsa_key