Я пытаюсь установить сессию SSH на двойной прыжок с разными пользователями на каждом прыжке, чтобы легко передавать файлы через fish/sftp.

мой .ssh/config похож

Host middle_server
    User            foo
    Hostname        192.168.xx.xx

Host www.server.org target
    User            bar 
    HostName        www.server.org
    ProxyCommand    ssh middle_server nc %h %p 2> /dev/null

Соединение с промежуточным сервером защищено ключом rsa и напрямую с промежуточного сервера на целевой сервер пользователя.

Когда я пытаюсь подключиться к цели, я получаю следующую ошибку:

[foo@localhost]$ ssh target
Enter passphrase for key '/home/foo/.ssh/id_rsa':
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Я могу подключиться с помощью 2 следующих методов, так что я думаю, что пользователь панели не используется для второго прыжка, но я понятия не имею, что может быть причиной.

[foo@localhost]$ ssh middle_server
Enter passphrase for key '/home/foo/.ssh/id_rsa':
[foo@middle_server ~]$ ssh bar@www.server.org
[bar@www ~]$ 

или же

[foo@localhost]$ ssh -A -t foo@middle_server ssh -A bar@www.server.org
Enter passphrase for key '/home/foo/.ssh/id_rsa':
[bar@www ~]$

Любая помощь будет принята с благодарностью, заранее спасибо!

1 ответ1

0

Когда вы используете ProxyCommand ваш локальный компьютер устанавливает соединение с целевым хостом. Поскольку вы хотите создать соединение от среднего к целевому, вы не должны использовать его (или не должны использовать его с nc).

Я бы не стал использовать ForwardAgent поскольку он не является полностью безопасным (пользователь root на средней машине может кодировать данные, используя ваш ключ, используя ssh-agent на вашей локальной машине).

Таким образом, одно из возможных решений - запустить команду ssh на промежуточном компьютере, чтобы указать целевой компьютер внутри вашей ProxyCommand на локальном компьютере. Например:

ssh bar@doesnt_matter_host_here -o ProxyCommand='ssh foo@middle_server "ssh bar@www.server.org nc localhost 22"'

Вы можете настроить хост с именем "www_over_middle" с помощью этой ProxyCommand в ~/.ssh/config:

Host www_over_middle
    User bar
    ProxyCommand ssh foo@middle_server "ssh bar@www.server.org nc localhost 22"

А потом:

ssh www_over_middle

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .