Ноя
19
2009

SSH без пароля

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

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

После запуска этой команды вам будет предложено ввести имя файла ключа, нажимаем enter оставляя файл значение по умолчанию.

Passphrase (считай пароль) можно и не указывать, но это будет не безопасно. И если кто-нибудь проникнет на твой компьютер и стянет файл ключа, то он сможет без проблем подключиться к вашим серверам. А если вы будете использовать для ключа passphrase, то он не сможет восопользоваться ключом. Кстати если не хотите потом каждый раз при коннекте к ssh вводить passphrase для ключа, то можно воспользоваться вот этой инструкцией.

yas@serv:~$ ssh-keygen -t dsa -C «yas»
Generating public/private dsa key pair.
Enter file in which to save the key (/home/yas/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/yas/.ssh/id_dsa.
Your public key has been saved in /home/yas/.ssh/id_dsa.pub.
The key fingerprint is:
e5:18:37:ec:55:3d:f5:34:31:15:01:a0:d8:40:90:d1 yas
The key’s randomart image is:
+–[ DSA 1024]—-+
| o*o …oBX|
| . E+.. . o=|
| ..o= . o|
| B o |
| S o |
| |
| |
| |
| |
+—————–+

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

Принцип действия вроде бы объяснил. Теперь нам надо скопировать на сервер эту самую публичную часть ключа. Делается это при помощи 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 yas375

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

1 Comment to "SSH без пароля"

  1. yas wrote:

    обновил статью. раньше я использовал rsa шифрование, а теперь dsa. Разницы почти нету, но dsa длиннее и вроде как безопаснее.
    Плюс я раньше в этой статье предлагаю делать ключ без пароля, но это было не безопасно. Ну и плюс в статье добавил ссылку на статью про тот как заинтегрировать ssh-aagent и kwallet

Leave Your Comment