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简介的更多相关文章

  1. [转帖]rsync简介

    rsync用法详细解释 https://www.cnblogs.com/noxy/p/8986164.html 之前一直使用 scp 现在发现这个命令更好一些. 提要 熟悉 rsync 的功能及其特点 ...

  2. [转帖]Kerberos简介

    1.  Kerberos简介 https://www.cnblogs.com/wukenaihe/p/3732141.html 1.1. 功能 一个安全认证协议 用tickets验证 避免本地保存密码 ...

  3. paramiko简介

    一.什么是paramiko 要想明白什么是paramiko,要先明白ssh协议. 二.什么是ssh协议 ssh全称是Secure Shell (翻译:安全的外壳),根据字面意思就可以知道是和安全相关的 ...

  4. [转帖]BurpSuite简介

    BurpSuite简介 https://bbs.ichunqiu.com/thread-54760-1-1.html BurpSuite ,这是一个辅助渗透的工具,可以给我们带来许多便利.Burp 给 ...

  5. [转帖]Keccak简介

    Keccak简介 https://blog.csdn.net/chengqiuming/article/details/82819769 2018年09月23日 08:04:40 cakincqm 阅 ...

  6. [转帖]SPARC简介

    https://www.cnblogs.com/chaohm/p/5674886.html 1.    概述 SPARC(Scalable Processor ARChitecture,可扩展处理器架 ...

  7. [转帖]phoronix-test-suite 简介

    <工作杂记>之phoronix-test-suite 2017年10月30日 14:32:52 打雷下雨 阅读数 2078更多 分类专栏: # linux   版权声明:本文为博主原创文章 ...

  8. 堡垒机paramiko模块

    paramiko简介: 模拟ssh客户端,使用ssh协议,基于sftp协议等做批量管理.例如处理用ssh登陆一千台机器执行同一个命令,或下载上传文件等需求 基于用户名密码登录执行命令: import ...

  9. Python网络模块Paramiko基本使用

    一.Paramiko简介 首先来看谁创造了paramiko,是一个名叫Jeff Forcier创建了paramiko项目.项目主页:http://www.paramiko.org,可以去看上面有很多相 ...

  10. [转帖]可能是东半球最好的 Curl 学习指南,强烈建议收藏!

    可能是东半球最好的 Curl 学习指南,强烈建议收藏! http://www.itpub.net/2019/09/30/3302/ 记得转帖过.. 简介 curl 是常用的命令行工具,用来请求 Web ...

随机推荐

  1. Java 插入、隐藏/显示、删除Excel行或列

    概述 操作Excel工作表时,对表格中的行或列数据可执行,包括插入.隐藏.显示.删除等在内的多种操作需求,本文将通过Java代码示例演示每种操作的具体实现方法.文中方法使用了Java Excel类库( ...

  2. DWS临时内存不可用报错: memory temporarily unavailable

    本文分享自华为云社区<DWS临时内存不可用报错: memory temporarily unavailable>,作者:漫天. 1.定位报错的DN/CN 当出现memory tempora ...

  3. 华为亮相KubeCon EU 2023 新云原生开源项目Kuasar推动“云上演进”

    摘要:协力同行.拥抱开源,解放数字生产力,为社会和行业带来更多价值. 在数字时代,如果说企业是一艘巨大的货船,那么云原生则为企业的每一个业务.每一个应用提供了标准化的集装箱,摆脱笨重的底层桎梏,打造新 ...

  4. 华为云自研PB级分布式时序数据库揭秘第一期:初识GaussDB(for Influx)

    摘要:GaussDB(for Influx)提供了独特的数据存储管理解决方案,云原生的存储与计算架构,可根据业务变化快速扩容缩容:高效的数据压缩能力和数据冷热分离设计,可大幅降低数据存储成本:高吞吐的 ...

  5. 资深Linux 系统管理员常用的15个很好用的Cron工作示例

    摘要:Linux Cron 实用程序是一种在特定时间和/或日期持续调度例行后台作业的有效方法.这篇文章讲述了15 个很好用的 crontab 工作调度示例. 本文分享自华为云社区<Linux C ...

  6. xcode打包导出ipa

    xcode打包导出ipa 众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需求,对于苹果 ...

  7. PPT 商务PPT 如何展示你的产品

    PPT 商务PPT 如何展示你的产品 如何优雅的展示产品 如何展示互联网产品 直接产品截图,比较生硬,简单粗暴 使用场景+样机 放一个电脑或手机的外壳 如何展示产品 如何展示现实中的产品 多角度剪裁 ...

  8. Jmeter对各种接口类型的测试

    JMeter对各种类型接口的测试 默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59):本地配好了JMeter ...

  9. 机器学习周刊 第4期:动手实战人工智能、计算机科学热门论文、免费的基于ChatGPT API的安卓端语音助手、每日数学、检索增强 (RAG) 生成技术综述

    LLM开发者必读论文:检索增强(RAG)生成技术综述! 目录: 1.动手实战人工智能 Hands-on Al 2.huggingface的NLP.深度强化学习.语音课 3.Awesome Jupyte ...

  10. ABAP 获取ALV报表中的数据

    当程序中需要获取某张报表展示的ALV数据,又不想重新写一遍查询逻辑,则可以调用该报表,直接将报表的ALV内表的数据获取到,提高开发效率 "-------------------------- ...