python 实现 ssh 客户端远控

简单记录python paramiko 模拟ssh客户端的基本使用 写自动化脚本用得到

日常开发连接 Linux 服务器,都会用到 ssh 客户端的软件
其实 python 有一个模块,可以简单模拟一个 ssh 客户端/服务端
编写一些自动化的的任务时,会经常和它打交道
简单记录一下 paramiko 的基本使用

一、安装 paramiko

paramiko 不是标准库,需要自行安装
要求 py2.7,3.4 版本以上^1

pip install paramiko

二、实例化 ssh 客户端

import paramiko
ssh_client = paramiko.SSHClient()

三、与服务器建立连接

在得到一个 ssh_client 客户端连接对象后

第一次和服务器建立连接,需要选择是否自动将服务器的 host_key 公钥,记录在本地

Host-key: 主机密钥,是用于在SSH协议中对计算机进行身份验证的加密密钥。

主机键是钥匙对,通常使用RSA,DSA或ECDSA算法。公共主机密钥存储在和/或分发给SSH客户端,私钥存储在SSH服务器上。^2

因为,在计算机的世界里,没有永久的朋友— IP 短时间里不会刷新,但是系统可能随时被重置

ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 添加未知主机的 ssh 公钥
ssh_client.connect(hostname='10.10.10.10', port=22, username='root', password='root')

否则会报错提示:

paramiko.ssh_exception.SSHException: Server '10.10.10.10' not found in known_hosts

可以加入 logging 模块,查看详细的通讯过程

import logging
logging.basciConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")

四、发送命令

使用三个变量,获取返回的信息对象

  • stdin:发送指令
  • stdout:执行结果
  • stderr:报错信息
stdin, stdout, stderr = ssh_client.exec_command("pwd")

五、解析命令执行结果

读取命令的执行结果

res, err = stdout.read(), stderr.read()
return_msg = res if res else err
result = result.decode(encoding="utf-8")
print(result)
# 结果
>>> '/root'

完整代码

import paramiko
import logging

logging.basciConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 添加未知主机的 ssh 公钥
ssh_client.connect(hostname='10.10.10.10', port=22, username='root', password='root')

stdin, stdout, stderr = ssh_client.exec_command("pwd")
res, err = stdout.read(), stderr.read()
return_msg = res if res else err
result = result.decode(encoding="utf-8")
print(result)
-> 加入科技玩家交流群组:点击加入 <-
注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章中源码或APP等,无法保证其绝对安全,需自行辨别。
6.文章关联方不想展示也可以微信站长“socutesheep”删除。
本文由 @日薅一毛 发布。如若转载,请注明出处: 科技玩家 » python 实现 ssh 客户端远控

给TA买糖
共{{data.count}}人
人已买糖
教程玩家投稿精选文章

Python 实现 Windows 远控

2022-5-7 13:33:34

教程玩家投稿精选文章

记录锦鲤log版global-agent依赖安装

2022-5-9 1:33:03

12 条回复 A文章作者 M管理员
贴心提醒
请认真对待作者付出,勿发表无意义言论,触发过滤规则的评论将无法提交,包含敏感词的评论会自动变成待审核状态哦。
  1. 唔西迪西

    学习一下

  2. xiaozhi24

    学习一下

  3. xiaozhi24

    学习下

  4. xiaozhi24

    好好写评论了

  5. PublicClassKF

    升级打卡第2天

  6. 依古比古

    升级打卡第2天

  7. 还差俩

    学习一下

  8. 𐃍

    打卡升级

  9. 枫笙

    打卡升级

  10. PublicClassKF

    打卡升级

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索