понедельник, 3 июня 2019 г.

ssh: аутентификация с помощью сертификатов

Пусть есть сервер с именем myServer, на котором создана учетная запись myUser, и есть клиентская машина, с которой мы хотим получить доступ по ssh под этой учетной записью, авторизовавшись с помощью сертификатов.

Будем считать, что машины "чистые", т.е., в каталогах ~/.ssh нет никаких файлов id_rsa.*

1. На клиенте: Переходим в каталог ~/.ssh и создаём там пару приватный ключ-открытый ключ командой:
ssh-keygen -t rsa
в результате в каталоге ~/.ssh образуются два файла: id_rsa (приватный ключ) и id_rsa.pub (открытый ключ).

2. На клиенте: Закидываем открытый ключ на сервер командой:
scp ~/.ssh/id_rsa.pub myUser@myServer:~/.ssh/

3. На сервере: Добавляем открытый ключ в файл authorized_keys командой:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/.ssh/id_rsa.pub

После этого можно пробовать заходить на сервер myServerс помощью сертификата:
ssh myUser@myServer

В приниципе, эти ключи необязательно должны иметь имя id_rsa.* и храниться в папке ~/.ssh. Можно при подключении явно указывать имя файла, содержащего приватный ключ:
ssh myUser@myServer -i ~/myCustom_id_rsa