Аутентификация ssh по ключу с Putty на Windows

Аутентификация в ssh по ключу имеет несколько преимуществ. Во-первых, удобство. У вас может быть несколько серверов и один ключ. Не нужно всякий раз вводить пароль от нужного сервера, что сэкономит время. Во-вторых, это безопасно. Вы сможете отключить аутентификацию по паролю и ssh будет защищён от брутфорса.

В этой статье разберём работу с Putty на Windows. Для неё есть удобная утилита — pgagent, способная загружаться автоматически при запуске ОС, и хранящая приватный ключ в памяти. Он может быть использован не только для Putty, но и для Filezilla.

Скачиваем дистрибутив Putty на свой компьютер и устанавливаем.

Содержание статьи:

  • 1 Генерируем публичный и приватный ключи
  • 2 Устанавливаем публичный ключ на сервер
  • 3 Настройка putty agent и добавление в автозагрузку
  • 4 Проверка аутентификаци по ключу

Генерируем публичный и приватный ключи

Для аутентификации понадобится пара ключей: публичный и приватный. Первый ключ можно закачать на любой сервер, к которому вам нужен доступ. Второй ключ следует беречь и никому не отдавать. Желательно защитить его паролем.

Сгенерируем пару ключей при помощи утилиты PuttyGen. Запустите её, параметры по-умолчанию оставьте: тип ключа ssh-2 rsa, длина 2048 бит.

Кликните по кнопке Generate, передвигайте мышь, пока ключ не будет готов.

Через пару мгновений ключи будут созданы. Копируем содержимое окошка «Public key for pasting into OpenSSH authorized_keys file:» и сохраняем на рабочем столе в текстовом документе mypublickey.txt. Это ваш публичный ключ в формате OpenSSH.

Придумайте хороший пароль для защиты приватного ключа и укажите его в полях Key Passphrase и Confirm Passphrase. Если кто-то получит ваш ключ, он не сможет воспользоваться им потому, что не будет знать пароль.

Но если вы не видите в этом необходимости, пароль можно не указывать. Приватный ключ, при этом, будет защищён хуже.

После этого кликаем по кнопке Save private key и указываем, где сохранить ключ.

Устанавливаем публичный ключ на сервер

Авторизуйтесь на сервере под именем нужного пользователя. В его домашней папке создайте каталог .ssh.

# mkdir ~/.ssh;chmod 0700 ~/.ssh

Затем в этой папке нужно будет создать файл для хранения авторизационных ключей — authorized_keys:

# touch ~/.ssh/authorized_keys;chmod 0600 ~/.ssh/authorized_keys

Помните о сохранённом на рабочем столе публичном ключе? Откройте текстовый файл, в котором мы его сохранили и скопируйте ключ полностью.

После чего на сервере откройте файл authorized_keys при помощи вашего любимого редактора (nano, например) и вставьте скопированный публичный ключ. Сохраните файл.

Эти же действия можно проделать при помощи sftp клиента. Filezilla отлично справится с задачей. Также создаём указанные папку и файл, редактируем и т.д.

Когда публичный ключ сохранён на сервере, самое время настроить putty agent.

Настройка putty agent и добавление в автозагрузку

Аутентификация может происходить и при помощи putty, если приватный ключ указать в соответствующей графе настроек. Однако, это неудобно, если нужно пользоваться ещё и sftp клиентом. Тогда лучше подгружать ключ при помощи putty agent: один раз запускаем pgagent и имеем доступ, когда пожелаем. Надо сменить ключ? Не проблема — меняем только в агенте и нигде больше. А чтобы каждый раз вручную не запускать агент, нужно сделать его загружаемым при включении Windows. :)

Для добавления pgagent в автозагрузку создайте ярлык для pgagent.exe. В свойствах ярлыка, в пункте «Объект» просто пропишите путь к каждому ключу, разделяя их пробелами.

"C:Program FilesPuTTYpageant.exe" S:folderkey.ppk S:folderkey2.ppk

Созданный ярлык нужно скопировать в папку автозагрузки. Для этого откройте меню Пуск, выберите Все программы, на папке Автозагрузка кликните правой кнопкой мыши, нажмите пункт «Открыть» в контекстном меню.

В эту папку переместите или скопируйте ярлык запуска pgagent. В итоге раздел Автозагрузка в меню Пуск должен выглядеть вот так.

Перезагрузите компьютер. Если все действия были сделаны правильно, в трее на панели задач будет отображаться иконка pgagent, при двойном клике по которой будет открываться основное окно приложения с загруженными ключами.

Обратите внимание, что если ваш ключ запаролен, то пароль необходимо будет указать в агенте сразу после авторизации в Windows. Пароль запрашивается только один раз после включения, до выхода из системы.

Проверка аутентификаци по ключу

Остаётся только проверить правильность аутентификации ssh по ключу. Запустите putty и подключитесь к любимому серверу.

Результат успешной аутентификации:

Authenticating with public key "something" from agent

Если же всё настроено неправильно, то будет выдано сообщение об ошибке и предложено напечатать пароль. :)