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

Материал из WikiAdmin
Перейти к: навигация, поиск

Иногда, для удаленного доступа на Linux-сервер по SSH, администраторы используют не связку логин+пароль, а публичные ключи, то есть сертификаты. Это удобнее при работе с удаленным компьютером с одного и того же рабочего места. У данного способа есть еще и небольшой плюс в плане безопасности. В качестве отрицательной стороны - в экстренном порядке вы не сможете воспользоваться соединением по SSH с любого компьютера, который окажется под рукой. А сертификаты с собой не каждый раз удобно носить. В практике были и такие случаи, когда приходится на сервер выходить с коммуникатора, чтобы быстро что-то подправить или перегрузить сервис. Поэтому все-таки иногда администраторы делают запрет на вход root, создание отдельного пользователя для входа по SSH и меняется порт.

Создание ключа для аутентификации по ssh

Изначально, надо создать те самые сертификаты, которые нам так нужны. Это делается не из под привилегированного пользователя, а из под того, под которым вы работаете. И, соответственно, они появятся в домашней директории пользователя в скрытой папке .ssh. Итак, отдаем команду:

ssh-keygen -t dsa

Идет достаточно долгая генерация ключей. Поэтому просьба не прерывать процесс и не переживать, что ваш компьютер завис. Пароль вы можете вводить тот, который вам хочется, к вашей учетной записи на локальном компьютере он может не иметь никакого отношения. Еще раз напомню, что по умолчанию, ваши ключи будут хранится в домашней директории в скрытой папке .ssh. Они будут сгенерированы алгоритмом DSAW. Тот ключ, который имеет расширение .pub - это Шифрованиепубличный ключ. Сертификат без расширения - это закрытый ключ, так называемая ваша электронная подпись и печать. И должен оставаться только у вас и никто больше не должен его получить ни при каких обстоятельствах. Лучшим вариантом было бы сменить права доступа к этой папке, чтобы никто не мог зайти даже с правами "только чтение".

Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
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:
36:ad:23:45:95:56:23:d5:21:83:21:55:25:49:13:87 user@home

Копирование и установка ключа на сервер

Теперь копируем публичный ключ, тот самый, с расширением .pub на удаленный компьютер, на который вы будете заходить по SSH. Здесь user - пользователь на сервере, server - домен или IP сервера:

cd ~/.ssh
ssh-copy-id -i ~/.ssh/id_dsa user@server
user@server's password:
id_dsa.pub 100% 612 0.9KB/s 00:00

Затем нам нужно установить публичный ключ на сервере в нужную директорию. Для этого подключаемся к нашему серверу, использую привычный парольный доступ:

ssh user@server

Заходим в директорию .ssh

user@server:~$ cd .ssh

Создаем файл для авторизованных ключей

user@server:~$ touch authorized_keys2

Даем доступ к ключам только этому пользователю

user@server:~$ chmod 600 authorized_keys2

Копируем содержимого файла ключа в файл, где будут хранится все ключи

user@server:~$ cat ../id_dsa.pub >> authorized_keys2

Удаляем файл ключа, который уже не нужен

user@server:~$ rm ../id_dsa.pub

Вход на удаленный сервер с помощью сертификата

Откройте второй терминал и попробуйте подключится, используя следующую команду. Здесь user - пользователь на сервере, server - домен или IP сервера:

user@home:~$ ssh -l user server

Второй терминал нужен на случай возникновения ошибки. Не торопитесь отключатся сразу от сервера, потом можно не подсоединится, а иногда сервера находятся ну очень далеко. Если пользователь сразу и без проблем зашел - значит все ок.

См. так же:

Если эта страница оказалась для вас полезной, нажмите на кнопку. :)
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты