随心一记

一二三四五,上山打老鼠


  • 首页

  • 归档

  • 标签
ywcsb

ywcsb

游戏可以不玩,小说不能不看。

153 日志
3 分类
42 标签
RSS
GitHub 知乎 随心一记
Links
  • 随心一记
  • 追梦人物的
  • MSDN

Python3 paramiko模块实现SSH密钥登陆

发表于 2019-04-09 | 阅读 1178 | 分类于 Python |

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,一般应用在多服务器管理即堡垒机中。

安装paramiko模块

pip3 install paramiko

基于 transport 方式登录

基于SSHClient是传统的连接服务器、执行命令、关闭的一个操作,有时候需要登录上服务器执行多个操作,比如执行命令,可以通过如下方式来操作

# 实例化一个transport对象
transport = paramiko.Transport(('10.20.3.4', 22))
# 建立连接
"""
基于秘钥的方式登录
private_key = paramiko.RSAKey.from_private_key_file('lihuabing')
transport.connect(username='lihuabing', pkey=private_key)
"""
# 基于密码的方式登录
transport.connect(username='root', password='12345.com')
# 将sshclient的对象的transport指定为以上的transport
ssh = paramiko.SSHClient()
ssh._transport = transport
"""
执行命令 获取命令结果:
stdin,显示输入的信息
stdout,显示输出的信息
stderr,显示错误信息
"""
stdin, stdout, stderr = ssh.exec_command('df -h')
# 获取命令结果
res,err = stdout.read(),stderr.read()
# 三元运算
result = res if res else err
print(result.decode())
# 关闭连接
transport.close()

SFTPClient用于连接远程服务器并执行上传下载

# 实例化一个transport对象
transport = paramiko.Transport(('10.20.3.4', 22))
# 建立连接
"""
基于秘钥的方式登录
private_key = paramiko.RSAKey.from_private_key_file('lihuabing')
transport.connect(username='lihuabing', pkey=private_key)
"""
# 基于密码的方式登录
transport.connect(username='root', password='12345.com')
# 实例化一个 sftp对象,指定连接的通道
sftp = paramiko.SFTPClient.from_transport(transport)
# 将myblog.sql 下载到本地 myblog.sql文件中
sftp.get('/home/lihuabing/myblog.sql', 'myblog.sql')
# myblog.sql 上传至服务器 /root/myblog.sql
sftp.put('myblog.sql', '/root/myblog.sql')
transport.close()
觉得不错,支持一下!
geerniya WeChat Pay

微信打赏

geerniya Alipay

支付宝打赏

# Python # 脚本
Django2.0 xadmin重写save_model方法
LinuxLVM详解

发表评论

共 0 条评论

    暂无评论
© 2018 - 2022 ywcsb
冀ICP备17022045号-1
Supported by 腾讯云