通过SSHPASS传递多个密码


1

我有3个Linux系统。

System_A System_B System_C

我想从系统System_A登录时将文件从“System_B”复制到“System_C”。

下面的代码将文件从“System_A”复制到“System_C”(因为我从“系统A”登录时运行了这个)

sshpass -p "pass123" scp /u01/File_A.txt oracle@$ServerIP_C:/u01/File_C.txt

此外,下面的代码执行我想要的。从系统System_A登录时,将文件从“System_B”复制到“System_C”。

sshpass -p "pass123" scp oracle@$ServerIP_B/u01/File_B.txt oracle@$ServerIP_C:/u01/File_C.txt

但是在上面的代码中它要求输入1个密码,因为我只通过sshpass而不是2来传递1个密码。

如何通过sshpass在这里传递第二个密码,这样它就不会提示我输入密码。

我试过以下代码:

 sshpass -p "pass123" sshpass -p "pass123" scp oracle@IP_B:/tmp/File_B.txt oracle@IP_C:/tmp/File_C.txt
This throws error: Conflicting password source

sshpass -p "pass123" scp oracle@IP_B:/tmp/File_B.txt sshpass -p "pass123" oracle@IP_C:/tmp/File_C.txt
Promted for 1 Password

Answers:


0

您应该考虑使用SSH密钥。使用密钥,您无需输入密码即可连接到计算机。它也被推荐作为sshpass手册页的替代方案。


我完全同意你的密钥对,但是我可以有限地访问我可以设置密钥对的更改,这就是为什么我想以某种方式使用sshpass工作。
拉胡尔

您可以尝试将两行作为参数传递给-p由换行符分隔的选项。你也可以试着调用sshpass两次,比如sshpass -p "pass1" sshpass -p "pass2" scp ...
RalfFriedl

你能不能给出命令“你可以尝试将两行作为参数传递给由换行符分隔的-p选项。”......后来没有用,我用后面命令的输出编辑了这个问题。
拉胡尔

我只是查看了源代码,它不能使用两个密码,我只是查看源代码。但你可以尝试这个程序expect
RalfFriedl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.