[转帖]paramiko简介

paramiko,简介 · 浏览次数 : 0

小编点评

**paramiko** 是一个 Python 库,用于实现对远程服务器的安全网络连接和操作。它可以用于执行远程命令、上传和下载文件、创建和删除目录等操作。 **主要组件:** * **SSHClient**:用于执行远程命令。 * **SFTPClient**:用于实现远程文件操作。 **用法:** 1. **实例化 SSHClient:**使用 `paramiko.SSHClient()` 创建 SSHClient 对象。 2. **设置自动添加策略:**使用 `set_missing_host_key_policy()` 方法设置自动添加主机名和密钥到本地 `HostKeys` 对象。 3. **连接远程主机:**使用 `connect()` 方法连接到远程主机。 4. **执行远程命令:**使用 `exec_command()` 方法执行远程命令。 5. **创建和删除文件:**使用 `mkdir()`、`remove()`、`rename()` 等方法创建和删除文件。 6. **获取服务器文件状态:**使用 `stat()` 方法获取文件状态。 7. **使用 SFTPClient 完成文件操作:**使用 `put()`、`get()` 等方法上传和下载文件。 **示例:** ```python import paramiko # 实例化 SSHClient client = paramiko.SSHClient() # 设置自动添加策略 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接远程主机 client.connect(hostname='10.0.0.1', port=22, username='root') # 执行远程命令 stdout, stderr = client.exec_command('ls -l') # 关闭连接 client.close() ```

正文

https://www.cnblogs.com/qiujichu/p/12048763.html

 

一、什么是paramiko

  要想明白什么是paramiko,要先明白ssh协议。

 

二、什么是ssh协议

  ssh全称是Secure Shell (翻译:安全的外壳),根据字面意思就可以知道是和安全相关的协议,官方说法是IETF制定的在应用层基础上的安全网络协议。  专门为了远程登录会话提供的安全协议。由于ssh传输数据都是压缩过的,所以在传输速度上会加快,目前ssh协议已经成为linux系统的标准配置。(具体的ssh协议的安全机制和实现原理请各位小伙伴们自行百度)

三、paramiko介绍

  看完第二部分小伙伴们应该已经明白了什么是ssh,而paramiko是python的一个库,使用paramiko我们可以直接使用Python代码对远程服务器进行操作(不用面对冰冷的命令窗口,就是舒服),这样就不用直接使用ssh命令操作!!!

四、paramiko核心组件介绍

  1. SSHClient:  主要是用于执行远程命令

  2. SFTPClient: 作用类似于linux的sftp命令,用来实现远程操作文件,对文件上传、下载和修改文件权限

五、SSHClient 的介绍

  1. 常用的方法有以下几种:connect():主要是用于实现和远程服务器的连接与认证

  需要的参数如下:

  

复制代码
 def connect(
        self,
        hostname,
        port=SSH_PORT,
        username=None,
        password=None,
        pkey=None,
        key_filename=None,
        timeout=None,
        allow_agent=True,
        look_for_keys=True,
        compress=False,
        sock=None,
        gss_auth=False,
        gss_kex=False,
        gss_deleg_creds=True,
        gss_host=None,
        banner_timeout=None,
        auth_timeout=None,
        gss_trust_dns=True,
        passphrase=None,
        disabled_algorithms=None,
    ):
复制代码

  从源码种可以看出 hostname是必须要填写的参数,用来指定要连接的主机,port 是要连接的端口,一般默认为22,username为用户名,password为密码,pkey则是私钥方式去验证身份,key_filename则是指定私钥文件地址。主要的是这几个参数。

  2. set_missing_host_key_policy():设置远程服务器没有在know_hosts文件中记录时的应对策略。策略目前有三种

  AutoAddPolicy 自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认

  WarningPolicy 用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接
  RejectPolicy 自动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项
  3. exec_command() : 用于远程执行命令
  4.open_sftp() :  在当前ssh会话基础上创建一个sftp会话。会返回一个sftpclient对象
六、sshclient的用法举例:
 
复制代码
import paramiko
# 第一步实例化 SSHClient,获取对象 client=paramiko.SSHClient()
# 设置自动添加策略,不添加的话如果不在本地know_hosts文件记录的主机则无法连接 client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机, client.connect(hostname='你要连接的ip', port=22, username='你的用户名', password='你的用户密码')
# 建立通道并执行命令 stdout 为正确的输出 stderr为错误的输出 stdin,stdout,stderr=client.exec_command('df -h')

client.close()
复制代码

2. 密钥连接方式

  

复制代码
# 获取密钥位置
private=paramiko.RSAKey.from_private_key_file('/Users/ch/.ssh/id_rsa') #实例化SSHClient client = paramiko.SSHClient() #自动添加策略,保存服务器的主机名和密钥信息,如果不添加,那么不再本地know_hosts文件中记录的主机将无法连接 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接SSH服务端,以用户名和密码进行认证 client.connect(hostname='10.0.0.1',port=22,username='root',pkey=private)
复制代码

七 、SFTPClient 常用方法的介绍

  from_transport(cls,t) 创建一个已连通的SFTP客户端通道

  put(localpath, remotepath, callback=None, confirm=True) 将本地文件上传到服务器 参数confirm:是否调用stat()方法检查文件状态,返回ls -l的结果
  get(remotepath, localpath, callback=None) 从服务器下载文件到本地
  mkdir() 在服务器上创建目录
  remove() 在服务器上删除目录
  rename() 在服务器上重命名目录
  stat() 查看服务器文件状态
  listdir() 列出服务器目录下的文件
用法举例:
 
复制代码
import paramiko
 
# 获取Transport实例
tran = paramiko.Transport(('10.0.0.3', 22))
 
# 连接SSH服务端,使用password
tran.connect(username="root", password='123456')
# 或使用
# 配置私人密钥文件位置
private = paramiko.RSAKey.from_private_key_file('/Users/root/.ssh/id_rsa')
# 连接SSH服务端,使用pkey指定私钥
tran.connect(username="root", pkey=private)
 
# 获取SFTP实例
sftp = paramiko.SFTPClient.from_transport(tran)
 
# 设置上传的本地/远程文件路径
localpath = "/Users/root/Downloads/1.txt"
remotepath = "/tmp/1.txt"
 
# 执行上传动作
sftp.put(localpath, remotepath)
# 执行下载动作
sftp.get(remotepath, localpath)
 
tran.close()
复制代码

 

 

文章参考:https://www.cnblogs.com/xiao-apple36/p/9144092.html#_label2_2

与[转帖]paramiko简介相似的内容:

[转帖]paramiko简介

https://www.cnblogs.com/qiujichu/p/12048763.html 一、什么是paramiko 要想明白什么是paramiko,要先明白ssh协议。 二、什么是ssh协议 ssh全称是Secure Shell (翻译:安全的外壳),根据字面意思就可以知道是和安全相关的协

【转帖】基于paramiko的二次封装

https://www.jianshu.com/p/944674f44b24 paramiko 是 Python 中的一个用来连接远程主机的第三方工具,通过使用 paramiko 可以用来代替以 ssh 连接到远程主机执行命令。 paramiko 模块提供了两个核心组件,分别是 SSHClient 

[转帖]python库Paramiko

https://zhuanlan.zhihu.com/p/456447145 测试过程中经常会遇到需要将本地的文件上传到远程服务器上,或者需要将服务器上的文件拉到本地进行操作,以前安静经常会用到xftp工具。今天安静介绍一种python库Paramiko,可以帮助我们通过代码的方式进行完成对远程服务

[转帖]如何用python连接Linux服务器

1.安装paramiko库 pip install paramiko 2.使用paramiko库连接linux #导入库 import paramiko #创建一个sshclient对象 ssh = paramiko.SSHClient() #允许连接不在know_host中的主机 ssh.set_

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地