Мне не удалось настроить 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 по-прежнему парольную фразу при подключении.