Вопрос или проблема
У меня есть ключевая пара, сгенерированная с помощью 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: Генерация ключевой пары
-
Создание ключевой пары:
С помощью Kleopatra (часть набора Gpg4win 3.0) сгенерируйте контейнерный ключ, который будет использоваться для SSH. Обратите внимание, что при создании ключа необходимо выбрать формат "SSH". -
Конвертация открытого ключа:
Если вы не обладаете открытым SSH-ключом, вам необходимо извлечь его из вашего GPG-ключа и добавить в файлauthorized_keys
на вашем Linux-сервере. Это можно сделать с помощью команды:gpg --export-ssh-key your-key-id > public_key.pub
Затем скопируйте содержимое
public_key.pub
в файл~/.ssh/authorized_keys
на вашем сервере.
Шаг 2: Настройка gpg-agent
-
Редактирование конфигурационного файла:
Откройте файл конфигурацииgpg-agent.conf
, который обычно находится в директории%APPDATA%\gnupg\
. Добавьте в него следующие строки:enable-putty-support debug-level guru log-file C:/Users/myusername/log.txt disable-scdaemon
-
Перезапуск gpg-agent:
После внесения изменений в конфигурацию необходимо перезапустить gpg-agent, чтобы изменения вступили в силу. Сделайте это, выполнив следующую команду в командной строке Windows:gpg-connect-agent KILLAGENT /bye
-
Добавление ключа в sshcontrol:
Вам также необходимо добавить ключ-грип к файлуsshcontrol
. Для этого сначала найдите ваш keygrip с помощью команды:gpg --list-secret-keys --with-keygrip
После получения keygrip добавьте его в файл
sshcontrol
, который находится в директории%APPDATA%\gnupg\
. Формат записи:/path/to/your/keygrip
Шаг 3: Настройка PuTTY
-
Скачивание и установка PuTTY:
Убедитесь, что у вас установлена последняя версия PuTTY, которая поддерживает интеграцию с gpg-agent. -
Настройка 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 пройдет успешно.