python paramiko模块学习分享
发布时间 - 2026-01-11 02:55:18 点击率:次paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输。

首先让我们理清以下几个名词:
SSHClient:包装了Channel、Transport、SFTPClient
Channel:是一种类Socket,一种安全的SSH传输通道;
Transport:是一种加密的会话(但是这样一个对象的Session并未建立),并且创建了一个加密的tunnels,这个tunnels叫做Channel;
Session:是client与Server保持连接的对象,用connect()/start_client()/start_server()开始会话.
paramiko 参考http://docs.paramiko.org/en/2.0/index.html
下载安装
pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
pip3 install pycrypto
pip3 install paramiko
具体模块使用
SSHClient:
远程连接分为两种:(1)基于用户名密码连接 (2)基于公钥秘钥连接
通过是用paramiko远程操作,其实本质也分为两种:(1)只用SSHClient (2)自己创建一个transport
基于用户名密码连接
import paramiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='host', port=22, username='root', password='123')
# 执行命令 stdout命令结果,stderr错误
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()
SSHClient 封装 Transport
import paramiko
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', password='123')
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read())
transport.close()
基于公钥秘钥连接
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='host', port=22, username='root', key=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()
SSHClient 封装Transport
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='wupeiqi', pkey=private_key)
ssh = paramiko.SSHClient()
ssh._transport = transport
stdin, stdout, stderr = ssh.exec_command('df')
transport.close()
SFTPClient:
用于连接远程服务器并进行上传下载功能。
基于用户名密码上传下载
import paramiko
transport = paramiko.Transport(('hostname',22))
transport.connect(username='root',password='123')
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')
transport.close()
基于公钥秘钥上传下载
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='root', pkey=private_key )
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')
transport.close()
Demo: 实现远程命令执行和文件上传
import paramiko
class SSHConnection(object):
def __init__(self, host='192.168.12.68', port=22, username='locojoy',pwd='123321QQ!'):
self.host = host
self.port = port
self.username = username
self.pwd = pwd
self.__k = None
def run(self):
self.connect() # 连接远程服务器
self.upload('db.py','/tmp/1.py') # 将本地的db.py文件上传到远端服务器的/tmp/目录下并改名为1.py
self.cmd('df') # 执行df 命令
self.close() # 关闭连接
def connect(self):
transport = paramiko.Transport((self.host, self.port))
transport.connect(username=self.username, password=self.pwd)
self.__transport = transport
def close(self):
self.__transport.close()
def upload(self,local_path,target_path):
sftp = paramiko.SFTPClient.from_transport(self.__transport)
sftp.put(local_path,target_path)
def cmd(self, command):
ssh = paramiko.SSHClient()
ssh._transport = self.__transport
# 执行命令
stdin, stdout, stderr = ssh.exec_command(command)
# 获取命令结果
result = stdout.read()
print(result)
return result
obj = SSHConnection()
obj.run()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# python
# paramiko
# 模块
# Python Paramiko模块的使用实际案例
# python的paramiko模块实现远程控制和传输示例
# windows下python安装paramiko模块和pycrypto模块(简单三步)
# Python Paramiko模块的安装与使用详解
# Python使用Paramiko模块编写脚本进行远程服务器操作
# python下paramiko模块实现ssh连接登录Linux服务器
# python使用paramiko模块实现ssh远程登陆上传文件并执行
# windows下安装python paramiko模块的代码
# Python paramiko模块的使用示例
# 两种
# 公钥
# 传至
# 文件上传
# 几个
# 是一种
# 让我们
# 这样一个
# 另外一个
# 装了
# 连接到
# 创建一个
# 大家多多
# 远端
# 文件传输
# 实现远程
# 目录下
# nbsp
# html
# strong
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
大连网站制作公司哪家好一点,大连买房网站哪个好?
百度浏览器如何管理插件 百度浏览器插件管理方法
如何快速搭建个人网站并优化SEO?
Android实现代码画虚线边框背景效果
如何用PHP快速搭建高效网站?分步指南
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
网站建设整体流程解析,建站其实很容易!
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何快速搭建虚拟主机网站?新手必看指南
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
如何在阿里云部署织梦网站?
Laravel如何处理和验证JSON类型的数据库字段
Swift中switch语句区间和元组模式匹配
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
linux top下的 minerd 木马清除方法
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
中山网站推广排名,中山信息港登录入口?
无锡营销型网站制作公司,无锡网选车牌流程?
如何在阿里云购买域名并搭建网站?
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
浅谈Javascript中的Label语句
如何在建站之星绑定自定义域名?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
如何快速搭建二级域名独立网站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
详解CentOS6.5 安装 MySQL5.1.71的方法
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
晋江文学城电脑版官网 晋江文学城网页版直接进入
jquery插件bootstrapValidator表单验证详解
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何彻底卸载建站之星软件?
Laravel如何实现事件和监听器?(Event & Listener实战)
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
iOS发送验证码倒计时应用
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
Laravel如何使用Livewire构建动态组件?(入门代码)
如何在服务器上配置二级域名建站?
Linux安全能力提升路径_长期防护思维说明【指导】
如何快速辨别茅台真假?关键步骤解析
高端建站如何打造兼具美学与转化的品牌官网?
如何在自有机房高效搭建专业网站?
Laravel如何实现用户密码重置功能?(完整流程代码)
EditPlus 正则表达式 实战(3)

