使用Python Paramiko通过SCP在两个远程Linux服务器之间复制文件

时间:2018-03-26 09:31:30

标签: python ssh paramiko scp

我有3台机器:

  • 服务器A(构建将运行代码的机器)
  • 服务器B(Linux)
  • 服务器C(Linux)

我的代码在服务器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')

但是文件再次从本地(代码运行)复制到远程而不是远程复制到远程。

1 个答案:

答案 0 :(得分:1)

您不能使用SCPClient类。

您必须登录到服务器B并在那里运行scp命令行客户端,才能将(本地 - 服务器B)文件上传到服务器C.

请参阅python paramiko run command

将密码传递给scp时会遇到问题。你最好使用密钥。如果您不想使用密钥,则必须使用此处描述的一些黑客:

(以及绝对不使用密钥的绝望的其他类似问题)