文章目录
一、Paramiko库
0.Paramilo官网
1.简介
paramiko,一个听起来不像英语的库,在诸多英文名的库中独立旗帜(官方解释为:”Paramiko” is a combination of the Esperanto words for “paranoid” and “friend”)。
Paramiko是一个用于在Python中建立和管理SSH连接的库,基于SSH2协议,它的主要功能就是实现对 ssh 协议的封装,能够在一个更高层面上,轻松地使用ssh、sftp等功能。
2.功能
(1)建立 SSH 连接
通过用户名和密码或使用 SSH 密钥进行身份验证,建立到远程服务器的安全连接。
(2)执行远程命令
在远程服务器上执行命令,并获取命令的输出和状态。
(3)文件传输(SFTP)
使用 SFTP 协议在本地和远程服务器之间上传、下载、删除或修改文件。
(4)端口转发
实现本地端口转发和远程端口转发,以支持通过 SSH 隧道进行的网络通信。
(5)管理 SSH 密钥
生成、使用和管理 SSH 密钥,以增强连接的安全性。
(6)处理 SSH 会话
管理多个 SSH 会话,处理会话的生命周期和错误管理。
Paramiko 的设计使其非常适合需要自动化远程服务器管理、部署脚本或需要与远程系统进行交互的应用程序。此外,Paramiko 也为更高级的 SSH 功能提供了支持,如代理跳板、动态端口转发等。
3.示例代码:使用 Paramiko 建立 SSH 连接并执行命令
import paramiko
client = paramiko.SSHClient() #创建SSH客户端实例
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #自动添加主机密钥
client.connect('hostname', username='your_username', password='your_password') #连接到远程服务器
stdin, stdout, stderr = client.exec_command('ls -l') #执行命令 exec_comand()
print(stdout.read().decode()) #打印命令输出
client.close() #关闭连接
import paramiko
# 创建 SSH 客户端
ssh = paramiko.SSHClient()
# 自动添加策略,保存服务器的主机名和密钥信息
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到远程服务器
ssh.connect(hostname='example.com', port=22, username='user', password='password')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls -l')
# 获取命令输出
print(stdout.read().decode())
# 关闭连接
ssh.close()
4.其他博主介绍的paramiko库帖子
①paramiko 库的简单学习:https://halysl.github.io/2019/01/21/paramiko库的简单学习
②python自动化第三方库之paramiko库:连接远程服务器并通过ssh协议远程执行命令 :https://www.cnblogs.com/hls-code/p/16549942.html
③Paramiko库讲解:https://blog.csdn.net/m0_49864110/article/details/128500527
④python的paramiko库如何使用:https://zhuanlan.zhihu.com/p/611042240
⑤Paramiko:Python中的强大SSH库:https://www.w3cschool.cn/article/83795800.html
⑥天翼云:[python] 基于paramiko库操作远程服务器:https://www.ctyun.cn/zhishi/p-335627
二、SSH的心跳保活
0.概念
心跳保活机制(Heartbeat mechanism)是一种常用于分布式系统、网络服务、以及多进程环境中的健康检查和故障检测机制。它的主要功能是通过定期发送“心跳”信号来确保系统组件的活跃状态,并在检测到组件不再发送心跳时触发故障处理或恢复机制。该机制广泛应用于服务器集群、分布式数据库、微服务架构等领域。
1.服务器的ssh
1.路径:/etc/ssh/sshd_config
2.设置SSH心跳保活
ClientAliveInterval 60
ClientAliveCountMax 3
①ClientAliveInterval 60
:每 60 秒发送一次心跳包。
②ClientAliveCountMax 3
:如果 3 次心跳包(共 180 秒)未收到响应,断开连接。【不写该行,默认也是3次】
3.我们都知道,建立连接,分为长连接和短连接
①短连接,每次执行完任务,就自动断开连接
②长连接,就需要有心跳保活机制,向双方确认连接还没有断开
2.客户端的ssh
路径:/etc/ssh/ssh_config