rsync SSH 代理通过 3 个远程系统转发不适用于单个命令

rsync SSH 代理通过 3 个远程系统转发不适用于单个命令

我可以执行以下操作:

$local> ssh -A remote1
$remote1> rsync -e "ssh remote2 ssh " remote3:/file .
$remote1>

这是可行的,因为remote1和的密钥都remote2在我的 gnome 密钥环中,并且remote3不需要密码。但是以下失败:

$local> ssh -A remote1 "./scriptOnRemote1.sh"

其中scriptOnRemote1.sh执行完全相同的 rsync 命令。它会产生以下错误:

Permission denied, please try again.
ssh_askpass: exec(/usr/lib64/ssh/ssh-askpass): No such file or directory
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(235) [Receiver=3.1.0]

这两种情况的详细输出之间的差异始于

pubkey_prepare: ssh_get_authentication_socket: No such file or directory

为什么会发生这种情况?

答案1

ssh-agent登录remote1主机后运行。

答案2

发生这种情况是因为您正在运行的脚本无法访问您的密钥。如果您这样做了,它也不应该起作用:

ssh -A remote1 'rsync -e "ssh remote2 ssh " remote3:/file .'

相关内容