使用 python 将本地文件传输到远程服务器 (windows)

Transfer a local file to a remote server(windows) using python

您好,我有这个示例路径“\10.81.67.162”,它是一个远程服务器 (windows OS)

我希望能够在 python 中使用 paramiko 将文件(本地)传输到远程服务器。

如果服务器在 linux,我可以让它工作。

这是我的示例代码

import paramiko
import base64
username = 'username'
password = 'password'
host = "10.81.67.162"
port = 22


transport = paramiko.Transport((host,port))
transport.connect(username = username, password = password)
stfp = paramiko.SFTPClient.from_transport(transport)

但在 windows 中出现此错误:

Traceback (most recent call last):
  File "ssh.py", line 9, in <module>
    transport = paramiko.Transport((host,port))
  File "build\bdist.win32\egg\paramiko\transport.py", line 289, in __init__
  File "C:\Python27\lib\socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 10061] No connection could be made because the target machi
ne actively refused it

Python 版本 2.7

Paramiko 版本 1.7.5

谢谢!

Windows 上没有 SSH 服务器 运行ning。这就是为什么你无法连接。 Windows 本身不支持 SSH。您需要在远程 windows 主机上安装第三方 SSH 服务器,例如 cygwin、按位 ssh 或 freeSSHD。

或者,如果您对 运行 只对 windows 主机上的命令感兴趣,那么您可以使用 Windows 原生支持的 winrm 协议。为此你需要一个 python 库 pywinrm。我用过这个并且工作正常:

https://github.com/diyan/pywinrm

如果您尝试连接到网络驱动器,可以使用 win_unc:

import os
from win_unc import UncCredentials, UncDirectory, UncDirectoryConnection

creds = UncCredentials('USERNAME', 'PASSWORD')
unc = UncDirectory(r'\<computername>\c$', creds)

conn = UncDirectoryConnection(unc)
conn.connect()

print list(os.listdir(r'\<computer_name>\c$\<folder>'))