Назад | Перейти на главную страницу

PuTTY использует переадресацию агента для цепочки серверов

Мне не удалось настроить AgentForwarding с помощью PuTTY :(

PuTTY - новейшая версия 0.61. Я создал пару открытых / закрытых ключей для PuTTY, преобразовал их в формат openssh, добавил их в /root/.ssh/authorized_keys как на host1, так и на host2. На обоих хостах в / etc / ssh / sshd_config:

PermitRootLogin without-password
AuthorizedKeysFile      %h/.ssh/authorized_keys
AllowAgentForwarding yes

На обоих хостах /root/.ssh/config содержит

Host *
    ForwardAgent yes

В конфигурации PuTTY включена опция Connection / SSH / Auth / Allow agent forwarding [x].

Когда я запускаю pagent.exe с загруженным ключевым файлом, я могу подключаться к host1 и host2 без пароля. Но когда я подключаюсь к host1 и пытаюсь ssh root@host2, Меня просят ввести пароль. Переменная $ SSH_AUTH_SOCK не установлена ​​в моем сеансе host1. Что я делаю не так?

Поскольку $ SSH_AUTH_SOCK не установлен, вероятно, проблема связана либо с putty / pagent, либо с самим sshd.

Вы можете легко перевести sshd в режим отладки. Войдите на сервер (это можно безопасно сделать через ssh, если вы не забудете перезапустить sshd после того, как вы закончите) и остановите sshd (с помощью ваших сценариев инициализации). Затем запустите:

/ usr / sbin / sshd -Dddd

(-D для режима переднего плана, -ddd для подробной отладки)

Попробуйте еще раз подключиться через putty и посмотрите вывод sshd. Если putty отправляет ключи для переадресации агента, вы должны увидеть что-то об auth-agent-req@openssh.com. Если вы этого не видите, значит, putty неправильно отправляет ключ для пересылки / запроса пересылки агента.

Это должно сузить круг вопросов. Вы также можете запустить ssh -vvv с host1 для получения подробных отладочных данных при попытке ssh на host2.

(На этом этапе не забудьте нажать Ctrl + C для процесса sshd переднего плана и перезапустить его из ваших сценариев инициализации, иначе вы будете заблокированы на своем сервере!)

Проблема была в screen применение. Он был запущен PuTTY на удаленном хосте с screen -d -RR(Подключение / SSH / Удаленная команда). Я нашел решение Вот и немного изменил его:

~ / .bashrc:

# Correct screen and tmux behavior with ssh-agent
parent="$(ps -o comm --no-headers $PPID)"

case $parent in
sshd)
        keep_vars="SSH_CLIENT SSH_TTY SSH_AUTH_SOCK SSH_CONNECTION DISPLAY XAUTHORITY"
        touch $HOME/.ssh/keep_vars
        chmod 600 $HOME/.ssh/keep_vars
        for i in $keep_vars; do
                 (eval echo export $i=\\\'\$$i\\\')
        done > $HOME/.ssh/keep_vars
;;
screen|tmux)
        source $HOME/.ssh/keep_vars
;;
esac
# This command must be run from shell within detached and re-attached screen session
# to interact with ssh-agent properly
alias fixssh="source $HOME/.ssh/keep_vars"
alias ssh="source $HOME/.ssh/keep_vars; ssh"

Каждый том, который я подключаю, переменные агента ssh хранятся в $HOME/.ssh/keep_vars Каждое новое открытое окно на экране может немедленно подключаться к другим машинам с помощью моего ключа - оно получает правильные переменные с экрана. В старых окнах мне нужно набрать fixssh а затем попробуйте подключиться.

Я утверждаю, что Putty использует другой ключ, чем тот, который загружен в Pageant. Установите парольную фразу на свой ключ, загрузите ее в Pageant и посмотрите, запрашивает ли Putty по-прежнему парольную фразу при подключении.