Python paramiko模块实战:SSH远程连接与命令执行详解

温以宁
温以宁
发布时间:2026-10-14| 6人浏览过
原创

本文深入解析Python中paramiko模块的核心用法,涵盖基于密码和公钥密钥两种SSH连接方式。通过具体代码示例,演示如何建立远程连接、执行Linux命令并获取结果,为开发堡垒机等自动化运维工具提供技术基础。

paramiko模块简介与安装

在着手开发堡垒机系统之前,首先需要掌握Python中paramiko模块的基本应用。该模块基于SSH协议构建,主要用于连接远程服务器并执行各类远程操作,是Python实现远程管理功能的核心库之一。

要使用paramiko模块,首先需在环境中完成安装。

模块安装命令


pip3 install paramiko

基于密码的SSH连接与命令执行

第一种连接方式是基于用户密码进行身份验证。通过指定主机名、端口、用户名及密码,程序可建立SSH会话。连接建立后,利用exec_command方法发送命令,并通过stdout读取标准输出结果。需注意,若命令执行出错,stderr会记录错误信息,而stdout可能为空,因此在获取结果时建议先判断输出内容,必要时可调整逻辑以显示错误信息,最后务必调用close方法关闭连接以释放资源。

密码连接代码示例


import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname="10.0.0.200", port=22, username='root', password='1')

# 执行命令
# stdin:标准输入(就是你输入的命令);stdout:标准输出(就是命令执行结果);stderr:标准错误(命令执行过程中如果出错了就把错误打到这里),stdout和stderr仅会输出一个
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = (stdout.read().decode('utf-8'))  # 这个有问题,如果执行的命令是错误的,会不显示错误,可以修改一下,先判断stdout有没有值,如果输出没有,就显示错误
print(result)
# 关闭连接
ssh.close()

基于密钥的SSH连接与命令执行

第二种连接方式更为安全,采用公钥/私钥对进行身份验证。此方法无需明文传输密码,而是通过指定本地私钥文件路径(如id_rsa)创建RSAKey对象,并在连接时通过pkey参数传入。其余连接、命令执行及结果获取流程与密码方式类似,同样需要处理标准输出并关闭连接。

密钥连接代码示例


import paramiko

# 指定私钥路径
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.171', port=22, username='root', pkey=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode())
# 关闭连接
ssh.close()

以上内容涵盖了paramiko模块在SSH连接中的两种主要实现方式,旨在帮助读者理解远程服务器交互的基本原理,为后续深入学习相关技术提供基础支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

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 算法库。