当 scp 从一台服务器复制到另一台服务器时,使用 sshpass 将密码传递给两台服务器

时间:2020-12-26 18:22:36

标签: ssh scp sshpass

我正在使用 scp 将文件从一台服务器复制到另一台服务器。两台服务器都需要使用 sshpass 传递密码,因此我需要在同一命令中使用 sshpass 两次。请注意,我使用 -3 标志是因为服务器 foo 无法直接与服务器 boo 通信。 我试过了 sshpass -p 'foo' scp -3 foo@foo.com:/home/foo/foo.txt sshpass -p 'boo' boo@boo.com:/home/boo/ 但它不起作用,没有错误消息,只是没有复制文件。有没有办法做到这一点?

注意:请不要使用密钥对建议答案,我想传递密码而不是使用密钥(或提示用户输入密码),我知道它对整个系统而且它不安全,我仍然想这样做。

1 个答案:

答案 0 :(得分:1)

这是不可能的。

根据scp manual

<块引用>
  • -3

    两个远程主机之间的副本通过本地主机传输。如果没有此选项,数据将直接在两个远程主机之间复制。请注意,此选项会禁用进度表并为第二台主机选择批处理模式,因为 scp 无法要求两台主机的密码或密码。

根据ssh_config manual

<块引用>
  • BatchMode

    如果设置为 yes密码提示和主机密钥确认请求等用户交互将被禁用。此选项在没有用户与 ssh(1) 交互的脚本和其他批处理作业中很有用。参数必须是 yesno(默认值)。