我有3台机器:
我的代码在服务器A中运行。我想ssh到服务器B,然后将文件复制到服务器C.我想使用服务器B的密码和服务器C和NOT密钥。
在我的情况下,我能够编写代码,使用Paramiko将文件从本地机器复制到远程。我在stackoverflow上寻找了很多解决方案,如下所示:
import paramiko
from scp import SCPClient
def createSSHClient(server, port, user, password):
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(server, port, user, password)
return client
ssh = createSSHClient(server, port, user, password)
scp = SCPClient(ssh.get_transport())
cp.get(r'/nfs_home/appers/xxxx/test2.txt', r'C:\Users\xxxx\Desktop\MR_Test')
但是文件再次从本地(代码运行)复制到远程而不是远程复制到远程。
答案 0 :(得分:1)
您不能使用SCPClient
类。
您必须登录到服务器B并在那里运行scp
命令行客户端,才能将(本地 - 服务器B)文件上传到服务器C.
请参阅python paramiko run command。
将密码传递给scp
时会遇到问题。你最好使用密钥。如果您不想使用密钥,则必须使用此处描述的一些黑客:
(以及绝对不使用密钥的绝望的其他类似问题)