Как настроить PuTTY + gpg-agent для подключения к SSH-серверу Linux

Вопрос или проблема

У меня есть ключевая пара, сгенерированная с помощью Kleopatra (из пакета Gpg4win 3.0). Я конвертировал открытый ключ в RSA ssh ключ и добавил его в файл authorized_keys на Linux машине.

На Windows машине я настроил файл gpg-agent.conf следующим образом:

enable-putty-support
debug-level guru
log-file C:/Users/myusername/log.txt
disable-scdaemon

Тем не менее, когда я открываю PuTTY и пытаюсь подключиться к серверу, я получаю сообщение об ошибке:

"Disconnected: No supported authentication methods available (server sent: publickey)"

Вопрос: как я могу использовать Putty с Windows машины, чтобы подключиться к Linux машине через SSH, используя пару gpg ключей? Я понял, что gpg-agent ведет себя как агент Pageant, поэтому он должен использовать приватный ключ gpg из памяти, чтобы выдавать зашифрованные строки для PuTTY. Это правильно? Или я неправильно все понимаю?

Если у кого-то есть эта проблема: полная работающая процедура на https://gist.github.com/matusnovak/302c7b003043849337f94518a71df777

Как сказал @user1686, похоже, единственный необходимый шаг, который не был выполнен автором вопроса, – это добавление keygrip в файл sshcontrol.

Для меня процедура, которая сработала для интеграции gpg с Putty, находится здесь

Смотря на автора вопроса, кажется, что он пропустил перезапуск агента после создания/изменения файла gpg-agent.conf:

gpg-connect-agent KILLAGENT /bye

Ответ или решение

Для успешного подключения к SSH-серверу на Linux с использованием PuTTY и gpg-agent, вам необходимо выполнить несколько шагов по настройке. В этой инструкции мы рассмотрим все этапы, начиная с создания ключей, их импорта и настройки необходимых конфигурационных файлов.

Шаг 1: Генерация ключевой пары

  1. Создание ключевой пары:
    С помощью Kleopatra (часть набора Gpg4win 3.0) сгенерируйте контейнерный ключ, который будет использоваться для SSH. Обратите внимание, что при создании ключа необходимо выбрать формат "SSH".

  2. Конвертация открытого ключа:
    Если вы не обладаете открытым SSH-ключом, вам необходимо извлечь его из вашего GPG-ключа и добавить в файл authorized_keys на вашем Linux-сервере. Это можно сделать с помощью команды:

    gpg --export-ssh-key your-key-id > public_key.pub

    Затем скопируйте содержимое public_key.pub в файл ~/.ssh/authorized_keys на вашем сервере.

Шаг 2: Настройка gpg-agent

  1. Редактирование конфигурационного файла:
    Откройте файл конфигурации gpg-agent.conf, который обычно находится в директории %APPDATA%\gnupg\. Добавьте в него следующие строки:

    enable-putty-support
    debug-level guru
    log-file C:/Users/myusername/log.txt
    disable-scdaemon
  2. Перезапуск gpg-agent:
    После внесения изменений в конфигурацию необходимо перезапустить gpg-agent, чтобы изменения вступили в силу. Сделайте это, выполнив следующую команду в командной строке Windows:

    gpg-connect-agent KILLAGENT /bye
  3. Добавление ключа в sshcontrol:
    Вам также необходимо добавить ключ-грип к файлу sshcontrol. Для этого сначала найдите ваш keygrip с помощью команды:

    gpg --list-secret-keys --with-keygrip

    После получения keygrip добавьте его в файл sshcontrol, который находится в директории %APPDATA%\gnupg\. Формат записи:

    /path/to/your/keygrip

Шаг 3: Настройка PuTTY

  1. Скачивание и установка PuTTY:
    Убедитесь, что у вас установлена последняя версия PuTTY, которая поддерживает интеграцию с gpg-agent.

  2. Настройка PuTTY:

    • Запустите PuTTY и введите адрес вашего SSH-сервера.
    • Перейдите в Connection -> SSH -> Auth.
    • Включите опцию Use Pageant, чтобы PuTTY мог использовать gpg-agent для аутентификации на сервере.

Шаг 4: Подключение к серверу

Теперь вы готовы подключаться к вашему SSH-серверу. Проследите, чтобы gpg-agent был запущен и правильно настроен. В PuTTY просто нажмите кнопку Open, чтобы установить соединение.

Устранение неполадок

Если после выполнения всех шагов вы по-прежнему получаете ошибку:

Disconnected: No supported authentication methods available (server sent: publickey)

то проверьте следующее:

  • Убедитесь, что ваш gpg-agent запущен и работает.
  • Убедитесь, что ключ добавлен в authorized_keys.
  • Проверьте настройки файла gpg-agent.conf на правильность.

Если вы выполните все указанные шаги, настройка PuTTY и gpg-agent для подключения к SSH-серверу на Linux пройдет успешно.

Оцените материал
Добавить комментарий

Капча загружается...