Ноя
19
2009

SSH без пароля

Мне на работе надо частенько заходить на разные сервера по ssh. Разумеется везде пароли такие, что не запомнишь, да и нет смысла их запоминать. А каждый раз лазить в описание проекта чтобы узнать пароль не очень удобно. И поэтому конечно хочется иметь доступ по SSH без пароля. И тут на помощь приходит авторизация по ключам! Тут всё просто! Мы генерируем на своей машине ключ при помощи утилиты ssh-keygen. Затем копируем публичную часть ключа на удалённый сервер при помощи ssh-copy-id.

Итак, сперва сгенерируем ключ. Запускаем ssh-keygen с параметром -t rsa Таким образом мы сгенерируем ключ с методом шифрования rsa (можно использовать и другие методы шифрования, но я пользуюсь rsa). Я предлагаю на возникающие при генерации вопросы жать enter, т.е. сохранять ключ в место по умолчанию и делать ключ доступным без пароля.

yas@yas-desktop:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/yas/.ssh/id_rsa): <Enter>
Enter passphrase (empty for no passphrase): <Enter> # тут можно задать пароль для доступа к ключу. Т.е. при авторизации по ssh с этим ключом у нас будет спрашивать не пароль к ssh сервера, а пароль к нашему этому ключу.
Enter same passphrase again: <Enter>
Your identification has been saved in /home/yas/.ssh/id_rsa.
Your public key has been saved in /home/yas/.ssh/id_rsa.pub.
The key fingerprint is:
79:11:12:22:22:22:ee:22:22:22:22:22:22:22:2e:c2 yas@yas-desktop # я тут на всякий случай заменил отпечатки пальцев ;)
The key’s randomart image is: # вот для чего используется эта картинка я не знаю.

+--[ RSA 2048]----+
|                        |
+----------------------+

Вот мы и сгенерировлаи наш ключ. Теперь нам надо записать на сервер наш ключ. Чтобы в следующий раз когда мы пытаемся подключиться к серверус авторизацией по ключу, то он будет просто сравнивать имеющуюся у него часть ключа с тем, что мы передаём (они разные, не волнуйтесь. Т.е. даже если кто-то другой на сервера скопирует ваш ключ, то он не сможет с ним подключситься к серверу). На сервере хранится публичная часть ключа. Т.е. она не сильно уже и секретна. А когда вы запрашиваете авторизацию по ключу, то вы в запросе автоматом передаёте свой ключ со своего компа и сервер по какому-то алгоритму проверяет подходит ли ваш ключ к той публичной части ключа, которая у него есть. И если да, то вас пускает.

Принципе действия вроде бы объяснил. Теперь нам надо скопировать на сервер эту самую публичную часть ключа. Делается это при помощи ssh-copy-id:

yas@yas-desktop:~# ssh-copy-id username@example.com
Password: < Ввозим тут пароль для username к этому хосту. Это необходимо сделать только первый раз.>
Now try logging into the machine, with «ssh ‘username@example.com’», and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

Теперь чтобы получить ssh-доступ без пароля к указанной машине пишите:

ssh username@example.com

Если вы хотите использовать такой же метод авторизации и для других машин, а не только к одной, то первое действие о генерации ключа повторять не надо. Сразу запускайте: ssh-copy-id user@example.net

UPD: ну а если и еще дальше пойти, то можно сделать так, чтобы вам не надо было каждый раз вводить имя пользователя на удалённом компе. Т.е. писать не

ssh username@example.com

а просто

ssh example.com

Как это сделать рекомендую почитать в статье Настройка ssh-клиента моего коллеги lest’а )

tags: , ,
posted in ssh by yas

Follow comments via the RSS Feed | Оставить комментарий | Trackback URL

Leave Your Comment