Python Paramiko模块-SSH远程连接服务器操作
创始人
2025-01-21 07:08:15
0次

前言

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和SFTPClent
  • SSH 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()  # 关闭 

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...