SSH-авторизация по ключу

SSH-авторизация по ключу позволяет быстро и без ввода пароля входить на удалённый сервер. Более того, она более безопасна, т.к. не подвержена атакам типа «Man-In-The-Middle attack» (MITM-атака) или, по-русски, атака посредника («человек посередине»).

Чтобы настроить SSH-авторизацию по ключу, необходимо создать пару ключей: открытый и закрытый. Открытый ключ добавляется в файл authorized_keys, закрытый копируется на компьютер, с которого будет осуществляться вход.

Настройка сервера к которому будем подключаться

Пара ключей создаётся командой ssh-keygen:

gentoo ~ # ssh-keygen
Generating public/private RSA key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Здесь предлагается ввести путь и имя файла. Если нажать «Ввод» и ничего не вводить, то пара ключей создастся в каталоге /root/.ssh и будут иметь названия id_rsa (закрытый) и id-rsa.pub (открытый).

Затем вам предлагается ввести пароль к ключу:

Enter passphrase (empty for no passphrase):

Пароль или правильнее, кодовую фразу, можно оставить пустым. Её можно задать (заменить) позже, набрав ssh-keygen -p.

Копируем открытый ключ в файл authorized_keys:

gentoo ~ # ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Устанавливаем права доступа 600, иначе SSH откажется работать:

gentoo ~ # chmod 600 ~/.ssh/authorized_keys

Теперь открытый ключ можно удалить, он больше не нужен:

gentoo ~ # rm ~/id_rsa.pub

Настройка удалённого компьютера Linux

Копируем закрытый ключ (в нашем случае это id_rsa) на компьютер, с которого будет осуществляться вход в каталог /root/.ssh и переименовываем его в хост удалённого компьютера. Т.е., например, если вы подключаетесь ssh root@proba.com, то ключ должен иметь имя proba.com.

На этом настройка Linux-клиента закончена.

Настройка удалённого компьютера Windows

Копируем закрытый ключ (в нашем случае это id_rsa) на Windows компьютер, с которого будет осуществляться вход.

В поставку Windows входит SSH-клиент, но ключ, созданный в Linux, ему не подходит. Его надо конвертировать с помощью программы puttygen.exe. Скачать её можно с сайта https://www.putty.org.

Запускаем puttygen.exe, в меню Conversions выбираем пункт Import key. В диалоговом окне выбираем наш закрытый ключ id_rsa. Затем в меню Conversions выбираем пункт Export OpenSSH key и указываем имя файла (для ясности лучше указать расширение .ppk).

Важно установить права одного пользователя, в противном случае Windows заблокирует доступ к ключу. Щёлкаем правой кнопкой мыши по файлу, выбираем пункт «Свойства». Переходим на вкладку «Безопасность», затем нажимаем кнопку «Дополнительно». В открывшемся окне щелкаем по кнопке «Отключить наследования», в следующем появившемся окне нажимаем «Удалить все унаследованные разрешения из этого объекта». Нажимаем «Ок», на предупреждение «Да».

Вернувшись в окно «Свойства» нажимаем кнопку «Изменить», в открывшемся окне кнопку «Добавить», затем «Дополнительно…» и в новом окне щёлкаем по копке «Поиск». В результатах поиска выбираем себя и дальше везде нажимаем «ОК». В результате у вас должно получиться:

Свойство закрытого ключа

Для подключения к удалённому компьютеру запустите командную строку cmd и введите:

C:\ssh.exe root@192.168.1.214 -i D:\Keys\id_rsa.ppk

где root — имя пользователя, 192.168.1.214 — IP адрес компьютера, D:\Keys\id_rsa.ppk — путь к нашему ключу.

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

В Windows 11 можно открыть несколько вкладок и переключаться между ними с помощью комбинации клавиш Ctrl + Alt + 1…2…3…4 и т.д. в зависимости от количества вкладок.