Python 利用 Paramiko 实现 SSH 连接与文件传输实操

花开有时
花开有时
发布时间:2026-10-11 | 2人浏览过
原创

针对远程服务器自动化运维与数据交换需求,本文详解如何利用 Python 的 paramiko 库建立安全 SSH 连接、自动处理主机密钥验证,并通过 API 完整演示远程命令执行及 SFTP 文件上下传的具体操作与代码示例。

基于 Paramiko 实现 SSH 通信与文件传输

SSH 协议广泛用于远程终端访问与安全数据交换。借助 Python 的 paramiko 第三方库,开发者可以灵活编写脚本替代手动命令行操作,实现连接管理、指令下发与自动化文件同步。

第1步:初始化客户端并处理主机密钥验证

使用 paramiko.SSHClient 发起连接时,默认策略会严格校验远程主机的公钥。首次连接未知服务器若未提前记录指纹,将触发 SSHException。可通过调用 set_missing_host_key_policy() 引入 AutoAddPolicy 自动信任新节点,从而跳过交互式确认拦截。

import paramiko

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname='hostname', username='admin', password='password')

远程命令执行与标准流处理

第2步:调用接口获取命令输出结果

连接就绪后,通过 exec_command() 向远程环境发送指令。该方法返回一个包含三个标准文件的元组((stdin, stdout, stderr)),分别用于接收输入、读取正常输出和捕获异常信息。例如列出当前目录:

stdin, stdout, stderr = ssh_client.exec_command("ls")
print(stdout.readlines())

处理需额外输入的交互式指令

当执行 sudo 等要求输入密码的命令时,可利用 stdin 对象写入字符串并按下换行符,模拟终端键入行为。注意保持客户端变量名一致:

stdin, stdout, stderr = ssh_client.exec_command("sudo ls")
stdin.write('mypassword\n')
print(stdout.readlines())

SFTP 协议文件传输实操

第3步:打开传输通道并完成文件同步

文件收发依赖于独立的传输客户端,可通过已建立的 SSH 会话调用 open_sftp() 获取该实例。获取句柄后执行下载或上传操作,完成后及时关闭释放资源。

从远程机器下载文件到本地:

ftp_client = ssh_client.open_sftp()
ftp_client.get('remotefilepath', 'localfilepath')
ftp_client.close()

从本地上传文件到远程机器:

ftp_client = ssh_client.open_sftp()
ftp_client.put('localfilepath', 'remotefilepath')
ftp_client.close()

总结

以上就是基于 Python 与 Paramiko 实现 SSH 连接与文件传输的详细内容,更多关于 Linux 远程自动化运维的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表