帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
Python Paramiko模块-SSH远程连接服务器操作
发布时间:2024-03-06 20:38:10   分类:帮助文档
Python Paramiko模块-SSH远程连接服务器操作




前言
Paramiko 是 Python 语言的一个 SSH 客户端。可以远程连接Linux服务器,通过 python 对 Linux 进行操作,可以实现进行对远程服务器进行下载和上传文件操作。
简介
Paramiko的特点:
支持SSHv2协议和SFTP协议支持密码和密钥认证提供高级的加密和身份验证选项可以执行远程命令和传输文件支持多种认证方式,如用户名密码、公钥、密钥等允许通过Shell、SFTP或SCP等通道访问远程服务器
由于 Paramiko 的功能强大,易于使用,因此在自动化管理、配置管理和任务调度等方面得到了广泛的应用
环境准备
pip install paramiko

Paramiko库主要包含两个部分:SSHClient和SFTPClient
SSHClient:表示类似于Linux的ssh命令,我们可以通过SSHClient模块对远程服务器执行一些命令操作(Linux)。SFTPClient:表示类似于SFTP工具,可以实现对远程服务器的文件进行上传和下载。
Paramiko常用类简介
Channel:该类用于创建在SSH Transport上的安全通道Message:SSH Message是字节流,该类对字符串、整数、bools和无限精度整数(Python中称为long)的某些组合进行编码Packetizer:数据包处理类Transport:该类用于在现有套接字或类套接字对象上创建一个Transport会话对象SFTPClient:该类通过一个打开的SSH Transport会话创建SFTP会话通道并执行远程文件操作SSHClient:SSHClient类是与SSH服务器会话的高级表示,该类集成了Transport,Channel和SFTPClentSSH Agent:该类用于SSH代理Host keys:该类与OpenSSH known_hosts文件相关,用于创建一个hosts keys对象Key handling:该类用于创建对应秘钥类型的实例,如RSA秘钥,DSS(DSA)秘钥。
SSHClient类
SSHClient类是对SSH会话的封装,该类封装了传输(transport)、通道(channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。 通过SSHClient进行对远程服务器上进行连接,并执行Linux命令,首先进行对paramiko下的SSHClient完成实例化,在使用SSHclient下的connet进行连接,后续进行操作一些命令:
import paramiko
# SSHclient 实例化
ssh = paramiko.SSHClient()
# 保存服务器密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 输入服务器地址,账户名,密码
ssh.connect(
hostname='127.x.x.1',
port=22,
username='root',
password='aa'
)
# 返回了三个数据,第一个是输入命令,第2个是命令返回的结果,第3个是命令错误时返回的结果
stdin, stdout, stderr = ssh.exec_command('pwd')
# 返回了当前的路径结果,如果错误则返回为空
print(stdout.read().decode('utf-8'))
# 返回错误的执行结果,如果正确则返回为空
print(stderr.read().decode('utf-8'))

ssh.close() # 关闭

常用方法: connect() 实现远程服务器的连接与认证 set_missing_host_key_policy() 设置连接到没有已知主机秘钥的服务器时使用的策略 load_system_host_keys() 从系统文件中加载主机秘钥 exec_command() 在远程服务器执行命令 invoke_shell() 在远程服务器启动交互式 shell 会话 open_sftp() 在一个会话连接中创建 SFTP 通道 close() 关闭连接
transport 方式登录
import paramiko

# 实例化一个transport对象
trans = paramiko.Transport(('127.x.x.1', 22))
# 建立连接
trans.connect(username='root', password='aa')

# 将sshclient的对象的transport指定为以上的trans
ssh = paramiko.SSHClient()
ssh._transport = trans
# 执行命令,和传统方法一样
stdin, stdout, stderr = ssh.exec_command('ls')
print(stdout.read().decode())

# 关闭连接
trans.close()

SFTPClient类
SFTPClient 作为一个 SFTP 客户端对象,根据 SSH 传输协议的 sftp 会话,实现远程操作,比如文件上传,下载,权限,状态等,端口就是SSH端口
方法 from_transport():创建一个已连通的SFTP客户端通道 put():上传本地文件到远程服务器 get():从远程服务器下载文件到本地 mkdir():在远程服务器上创建目录 remove():删除远程服务器中的文件 rmdir():删除远程服务器中的目录 rename():重命名远程服务器中的文件或目录 stat():获取远程服务器中文件的详细信息 listdir():列出远程服务器中指定目录下的内容
代码示例
import paramiko

# Transport实例
tran = paramiko.Transport(('127.x.x.1', 22))
# 连接服务器
tran.connect(username="root", password='aa')

# 实例化SFTPClient对象
sftp_client = paramiko.SFTPClient.from_transport(tran)

# 设置上传的本地/远程文件路径
sftp_client.put(r"D:\abc.jpg", "/root/a.txt") # 上传
print("上传成功")
sftp_client.get("/root/a.txt", r"D:\abc1.jpg") # 下载
print("下载成功")
tran.close() # 关闭





香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价