我想使用fabric将 remote1 主机中的文件复制到 remote2 主机。 我正在尝试将 remote2 的密码传递给Fabric运行命令,但它仍然提示输入 remote2 密码。
我的代码有什么问题吗?
run('echo "pass123" | scp my.tar root@1.2.3.4:')
run('"pass123" | scp my.tar root@1.2.3.4:')
修改 在我们的产品和交错环境中,不支持密钥身份验证。
答案 0 :(得分:1)
OpenSSH实用程序(包括scp
)不接受命令行或标准输入上的密码。当他们读取密码时,他们会明确地打开进程的TTY并从中读取。
基本上有四种方法可供选择:
使用基于密钥的身份验证而不是密码。
使用sshpass
或expect
等程序通过PTY将密码提供给scp
。
Download the OpenSSH source code并修改软件以便按您的方式工作。
找到一种方法来传输这些不涉及使用OpenSSH客户端软件的文件。