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

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

本文深入解析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 相关产品和应用

全部下载

专题列表