当前位置: 首页 > news >正文

Python自动连接SSH

Python自动连接SSH

在 Python 中,可以使用 paramiko 模块来编写脚本自动执行 SSH 命令。paramiko 是一个用于 SSHv2 的 Python 实现,可以帮助你在脚本中进行远程执行命令。

首先,确保安装了 paramiko

pip install paramiko

然后,你可以使用以下 Python 脚本示例:

import paramiko# 远程主机的地址、用户名和私钥文件路径
remote_host = "example.com"
remote_user = "your_username"
port = 22
pwd = "password"
is_private_key = False
private_key_path = "/path/to/your/private/key"# 创建 SSH 客户端
client = paramiko.SSHClient()# 自动添加主机密钥 (此处可能会有潜在的安全风险,请谨慎使用)
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接到远程主机,2种方法,密钥法和密码法
if(is_private_key):private_key = paramiko.RSAKey(filename=private_key_path)client.connect(remote_host, port, username=remote_user, pkey=private_key)
else:ssh.connect(remote_host, port, remote_user, pwd)# 执行远程命令
stdin, stdout, stderr = client.exec_command("ls")# 打印命令输出
print(stdout.read().decode())# 关闭 SSH 连接
client.close()

在这个脚本中:

  • paramiko.SSHClient() 创建了一个 SSH 客户端。
  • paramiko.AutoAddPolicy() 设置了一个策略,用于在第一次连接时自动添加主机密钥到本地 known_hosts 文件中。请注意这可能存在安全风险。
  • paramiko.RSAKey(filename=private_key_path) 使用指定路径的私钥文件进行认证。
  • client.connect() 连接到远程主机。
  • client.exec_command("ls") 执行了一个远程命令,这里是简单的列出目录。
  • stdout.read().decode() 读取命令的标准输出。

请替换示例中的远程主机地址、用户名和私钥文件路径为你的实际信息。并记住在生产环境中慎用自动添加主机密钥的方式,最好在安全环境中手动添加。

相关文章:

  • Redis入门三(主从复制、Redis哨兵、Redis集群、缓存更新策略、缓存穿透、缓存击穿、缓存雪崩)
  • 算法学习——LeetCode力扣动态规划篇8
  • MATLAB 自定义生成直线点云(详细介绍) (47)
  • JSQLParserException异常
  • OpenHarmony无人机MAVSDK开源库适配方案分享
  • Mac 装 虚拟机 vmware、centos7等
  • phpspreadsheet导出Excel报错问题汇总
  • 运筹学基础(二):求解整数规划的分支定界法(branch and bound)
  • 快速上手Spring Cloud 九:服务间通信与消息队列
  • Docker Stack(堆栈) 部署多服务集群,多服务编排
  • python电商结合双轨制
  • 推特Twitter有直播功能吗?如何用Twitter直播?
  • Windows 电脑麦克风 自动启用/禁用 小玩具!
  • rust - 使用文件锁防止应用多开
  • 类模板与继承及成员、全局函数的实现
  • 【知识碎片】第三方登录弹窗效果
  • Android开源项目规范总结
  • Git 使用集
  • Hibernate【inverse和cascade属性】知识要点
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Js基础——数据类型之Null和Undefined
  • learning koa2.x
  • overflow: hidden IE7无效
  • Redis字符串类型内部编码剖析
  • SSH 免密登录
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 搭建gitbook 和 访问权限认证
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 工作中总结前端开发流程--vue项目
  • 跨域
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 前端攻城师
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 透过事物看本质的能力怎么培养?
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)Android开发优化---------UI优化
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (论文阅读11/100)Fast R-CNN
  • (译)2019年前端性能优化清单 — 下篇
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Unity3DUnity3D在android下调试
  • (转)可以带来幸福的一本书
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .FileZilla的使用和主动模式被动模式介绍
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net Application的目录
  • .net 调用php,php 调用.net com组件 --
  • .NET 中 GetProcess 相关方法的性能