sftp/fish 与不同用户进行双跳

sftp/fish 与不同用户进行双跳

我正在尝试通过双跳设置 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 密钥保护,并且从中间服务器直接与 bar 用户建立目标连接。

当我尝试连接到目标时,出现以下错误:

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

我可以使用以下两种方法进行连接,因此我猜测 bar 用户不用于第二跳,但我不知道可能是什么原因造成的。

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

或者

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

如能得到任何帮助我们将不胜感激,提前谢谢!

答案1

当你使用ProxyCommand你的当地的机器与目标主机建立连接。由于您要创建从中间到目标的连接,因此不应使用它(或不应将其与 一起使用nc)。

我不会使用,ForwardAgent因为它不是完全安全的(中间机器上的用户可以使用您在本地机器上root使用的密钥对数据进行编码)。ssh-agent

ssh因此,一个可能的解决方案是在中间机上运行命令来在ProxyCommand本地机器内的目标机器。例如:

ssh bar@doesnt_matter_host_here -o ProxyCommand='ssh foo@middle_server "ssh [email protected] nc localhost 22"'

ProxyCommand您可以在您的上配置一个名为“www_over_middle”的主机~/.ssh/config

Host www_over_middle
    User bar
    ProxyCommand ssh foo@middle_server "ssh [email protected] nc localhost 22"

进而:

ssh www_over_middle

相关内容