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

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

针对远程服务器自动化运维与数据交换需求,本文详解如何利用 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。