SCP使用密码在python中

时间:2017-04-23 22:35:50

标签: python scp

我一直在尝试使用密码将scp文件写入远程计算机。我用了这段代码:

import os
import scp
client = scp.Client(host="104.198.152.xxx", username="nxxx", password="xxxxxx")
client.transfer("script.py", "~/script.py")

How to scp in python?中建议,但输出:

File "script.py", line 5, in <module>
    client = scp.Client(host="104.198.152.153", username="nazarihome", password="mohMOH13579")
AttributeError: 'module' object has no attribute 'Client'

我也尝试过人们建议的其他方式,似乎没有一种方法可行。有没有人有一个真正有效的建议?

P.S。如果您的答案取决于此,我必须使用密码而不是密钥。

2 个答案:

答案 0 :(得分:0)

scp.py GitHub page有以下示例,它使用paramiko库来处理SSL:

from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('example.com')

# SCPCLient takes a paramiko transport as its only argument
scp = SCPClient(ssh.get_transport())

scp.put('test.txt', 'test2.txt')
scp.get('test2.txt')

scp.close()

所以你想要的实际类型是scp.SCPClient

答案 1 :(得分:0)

此日期为2019年1月:

安装必需的Python软件包:

pip install scp
pip install paramiko

在代码中包含库

from paramiko import SSHClient
from scp import SCPClient

为此编写了一个函数

# SSH/SCP Directory Recursively     
def ssh_scp_files(ssh_host, ssh_user, ssh_password, ssh_port, source_volume, destination_volume):
    logging.info("In ssh_scp_files()method, to copy the files to the server")
    ssh = SSHClient()
    ssh.load_system_host_keys()
    ssh.connect(ssh_host, username=ssh_user, password=ssh_password, look_for_keys=False)

    with SCPClient(ssh.get_transport()) as scp:
        scp.put(source_volume, recursive=True, remote_path=destination_volume)

现在在代码中任意位置调用它:

ssh_scp_files(ssh_host, ssh_user, ssh_password, ssh_port, source_volume, destination_volume)

如果以上各项均正确实施,您将在控制台/日志中看到成功的消息,如下所示:

enter image description here