SSH авторизация по публичным ключам
Иногда, для удаленного доступа на 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
Второй терминал нужен на случай возникновения ошибки. Не торопитесь отключатся сразу от сервера, потом можно не подсоединится, а иногда сервера находятся ну очень далеко. Если пользователь сразу и без проблем зашел - значит все ок.
См. так же: