当 ssh 无法打开 /dev/tty 时 rsync 失败

当 ssh 无法打开 /dev/tty 时 rsync 失败

我有一个脚本需要将一些文件同步到远程计算机。 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。

相关内容