我有一个脚本需要将一些文件同步到远程计算机。 rsync 命令如下所示:
rsync -avz -e 'ssh -vv -o IdentitiesOnly=yes -i /data/credentials/rsync2.key' \
--rsync-path="mkdir -p ~/new_data/12345/ && rsync" \
/data/new_data/ some_user@$REMOTE_HOST_IP:~/new_data/12345/
脚本的输出如下所示:
... debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) 已发送 debug1:期待 SSH2_MSG_KEX_DH_GEX_GROUP debug2:dh_gen_key:隐私密钥位设置:134/256 调试2:位设置:505/1024 debug1:服务器主机密钥:RSA XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX debug1:read_passphrase:无法打开/dev/tty:没有这样的设备或地址 主机密钥验证失败。 rsync:连接意外关闭(到目前为止已收到 0 字节)[发送者] rsync 错误:io.c(605) [sender=3.0.9] 出现无法解释的错误(代码 255)
在我看来,ssh 正在尝试在密钥上使用密码。不应该,密钥不需要密码。另外,我很确定有关的消息/dev/tty
并不完全准确,因为我的脚本确认了该消息的/dev/tty
存在(ls -l
上面显示crw-rw-rw- 1 root root 5, 0 Feb 23 19:37 /dev/tty
:)。我还知道密钥文件是有效的,因为我可以使用密钥通过 ssh 手动连接到远程主机。
这里的一个问题是我的脚本在 docker 容器中运行,我不确定这会如何影响 rsync 和 ssh。