我可以执行以下操作:
$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 .'