Содержание
Подключение к серверу с использованием ssh-ключа
На сервере (на примере ОС Debian 9)
Необходимо включить в конфиге ssh-сервера (/etc/ssh/sshd_config):
для ssh версии протокола 1 (устаревший протокол, не рекомендуется)
RSAAuthentication yes
для ssh версии протокола 2
PubkeyAuthentication yes
По умолчанию публичный ключ(и) пользователя хранятся в файле «.ssh/authorized_keys» домашнего каталога. Изменить место поиска можно с помощью ключа AuthorizedKeysFile. Можно указать более одного места, разделенного пробелами.
# AuthorizedKeysFile .ssh/authorized_keys
Можно использовать: %h - будет заменен на домашний каталог пользователя, %u - будет заменен на имя пользователя
Права на каталог и файл:
drwx------ user_name user_name .ssh -rw------- user_name user_name authorized_keys
Файл «authorized_keys» является текстовым файлом. Записать публичный ключ в этот файл можно просто в редакторе (например, nano). Есть еще несколько вариантов как добавить ключ на сервер, например через ssh-copy-id. Допускается хранить в нем несколько публичных ключей. Каждый публичный ключ на отдельной строчке.
Смысл этого в примере ниже.
Путь есть «прописанный» на сервере пользователь с именем логина qwerty.
Т.е. для пользователя с именем qwerty есть учетная запись (с паролем) на сервере.
И есть два «внешних» пользователя, user1 и user2, не имеющих своих учетных записей на сервере.
Эти пользователи НЕ знают пароль пользователя qwerty!
Если для пользователя qwerty в файле authorized_keys будут публичные ключи пользователей user1 и user2,
то оба пользователя могут подключиться к серверу со своими ключами каждый примерно такой командой:
$ ssh qwerty@ip_server
Оба пользователя, при подключении, будут работать на сервере от имени пользователя qwerty. Но надо заметить, что для каждого пользователя, при подключении к серверу, сервер будет перебирать приватные ключи из «authorized_keys» пока не произойдет «совпадение» с публичным ключем подключаемого пользователя.
На стороне клиента
ОС Windows (PuTTY)
Для авторизации по ключу в PuTTY надо указать расположение ключа в меню SSH — Auth. Если ключ сгенерирован в Linux, нужно перевести его в формат ppk с помощью утилиты PuTTYgen.
ОС Linux
Самый простой вариант подключения командой:
$ ssh youruser@remote.server.host
Обычно публичные и приватные ключи находятся в подкаталоге «.ssh-key» домашнего каталога пользователя. Если это не так, то при подключении к серверу нужно указать где находится приватный ключ.
Сделать это можно несколькими способами:
- указать в самой команде через ключ -i:
$ ssh -i <path_to_private_key> youruser@remote.server.host
- добавить необходимые настройки в «~/.ssh/config» (в нем много чего можно сделать)
- использовать ssh-agent через keychain
Если приватный ключ пользователя при его генерации был защищен секретной фразой (паролем), то придется вводить секретную фразу при каждом подключении к удаленному серверу по ключу. Это несколько не удобно. На этот случай, существуют специальные программы ssh-agent и ssh-add, в общем-то вторая является дополнением первой.
Использование ключей для авторизации не отменяет ввода пароля пользователя при вызове команды sudo! Однако можно настроить работу sudo без запроса пароля текущего пользователя.
