Windows环境下Python配置SSH远程连接与文件传输教程
本文详述在Windows环境下利用Python第三方库paramiko实现SSH远程连接的完整流程。涵盖依赖库的标准安装方法、基于SSHClient与Transport两种模式的远程命令执行逻辑,以及SFTP协议的本地文件上传与下载实操代码。详细拆解操作步骤与参数配置,适用于IT自动化运维与服务器批量管理场景。
实现Windows下Python通过SSH远程连接与操作
第1步:安装核心依赖库
目的:解决运行环境中的加密与协议解析依赖。
入口:Windows命令行窗口(推荐PowerShell或CMD管理员权限)。
动作:现代Python版本已不再需要手动编译古老的pycrypto或单独处理ecdsa,直接通过包管理器一键安装即可自动拉取cryptography、bcrypt等底层依赖。
重要参数:pip install paramiko
可观察的完成状态:终端无红色Error回滚,显示Successfully installed相关提示后,默认模块将保存至 %PYTHON_HOME%\Lib\site-packages 目录下。
第2步:建立连接并执行远程命令
目的:通过TCP 22端口向Linux目标发送指令并读取返回值。
入口:Python脚本环境。
动作:实例化 paramiko.SSHClient(),设置不检查已知主机的安全策略,传入IP、端口、账号密码发起握手。调用 exec_command 传递Shell指令,读取 stdout 结果后关闭会话。
重要参数:host(目标IP)、port(默认22)、user、pswd。
可观察的完成状态:控制台准确打印出远程系统的运行反馈。
#!/usr/bin/python
# -*- coding:utf-8 -*-
import paramiko
def main():
host = "10.1.1.1"
port = 22
user = "root"
pswd = "111222333"
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect(host, port, user, pswd)
stdin, stdout, stderr = ssh.exec_command('ifconfig')
print(stdout.read().decode('utf-8'))
except Exception as e:
print(f"连接或执行失败: {e}")
finally:
ssh.close()
if __name__ == '__main__':
main()

第3步:跨平台文件传输(上传与下载)
注意:执行put操作时若无同名保护机制会直接覆盖远程原文件,建议操作前确认目标路径权限并预先备份关键数据。
目的:在非交互式状态下同步本地磁盘与远程服务器的数据文件。
入口:Python脚本中的 paramiko.Transport 对象。
动作:建立TCP传输通道并完成身份认证,通过 SFTPClient.from_transport() 挂载文件传输协议客户端。指定 localpath 与 remotepath 调用 put 或 get 方法,操作完毕务必断开Transport连接释放资源。
重要参数:remote path(如 /var/log/system.log),local path(如 C:/tmp/system.log)。
可观察的完成状态:指定本地目录生成新文件,或远程原文件被覆盖/提取。
# 上传文件到Linux服务器示例
import paramiko
t = paramiko.Transport(("主机IP", 22))
t.connect(username="用户名", password="口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath = '/var/log/system.log'
localpath = 'C:/tmp/system.log'
sftp.put(localpath, remotepath)
t.close()
# 下载linux服务器上的文件示例
# sftp.get(remotepath, localpath)
模式对比与注意事项
实际开发中通常涉及两种连接层级:
1. SSHClient模式(推荐):封装了完整的SSH会话生命周期,内置AutoAddPolicy可自动接管未知主机的密钥验证,适合批量运维脚本。
2. Transport模式:偏向底层TCP通道控制。若连接需严格校验服务端公钥,可在 t.connect() 追加 hostkey 参数进行比对。该模式常用于需要先传文件再通过Shell执行复杂指令的高级架构。
排错与核对:
- Python对模块名大小写敏感,导入时需严格匹配 import paramiko。
- 若运行提示缺少底层加密库,请优先升级 pip 至最新版后重新执行安装命令,避免手动遗留旧的pycrypto冲突。
- Windows系统路径建议使用正斜杠或Raw字符串(r'C:\path'),防止转义字符干扰文件定位。
以上就是Python配置SSH远程连接与文件传输的详细内容,更多关于Python自动化运维与Paramiko进阶资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









