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

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

    感谢分享,内容不错,学习了!!

  2. Carol

    本中级玩家前来顶帖?

  3. Carol

    支持,感觉挺不错的??

  4. zoryo

    学习了

  5. AᏴ࿆至尊宝

    水一下水一下

  6. H

    不错 学习一下

  7. 插件吗丁啉

    不错 学习一下

  8. 卡莎布兰卡

    感谢分享,插眼学习

  9. 七年

    谢谢分享,学习了

  10. 玩趣

    好东西学习了

  11. 風之守護

    插眼学习

  12. 七年

    先看看,不明白的地方再问

  13. 七年

    打卡升级

  14. 84896150

    可以可以

  15. 诸神

    青龙安装不上paramiko

  16. 萝卜头

    谢谢,分享学习了

  17. 七年

    谢谢大佬分享,谢谢!

  18. 84896150

    必须点赞

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