Python模块学习 - Paramiko
简介
ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。
有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。
由于paramiko属于第三方库,所以需要使用如下命令先行安装
pip3 install paramiko
Paramiko介绍
paramiko包含两个核心组件:SSHClient和SFTPClient。
SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。
SFTPClient的作用类似与Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操作,如文件上传、下载、修改文件权限等操作。
![](https://img.haomeiwen.com/i13717038/471f33e9ff9b8461.png)
Paramiko的基本使用
SSHClient常用的方法介绍
connect():实现远程服务器的连接与认证,对于该方法只有hostname是必传参数。
![](https://img.haomeiwen.com/i13717038/5551c64629033b49.png)
set_missing_host_key_policy():设置远程服务器没有在know_hosts文件中记录时的应对策略。目前支持三种策略:
设置连接的远程主机没有本地主机密钥或HostKeys对象时的策略,目前支持三种:
AutoAddPolicy 自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认
WarningPolicy 用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接
RejectPolicy 自动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项
exec_command():在远程服务器执行Linux命令的方法。
open_sftp():在当前ssh会话的基础上创建一个sftp会话。该方法会返回一个SFTPClient对象。
![](https://img.haomeiwen.com/i13717038/6bae37da09e750e9.png)
SSHClient常用的方法举例
![](https://img.haomeiwen.com/i13717038/d7cfa7357bb392bb.png)
密钥连接方式
![](https://img.haomeiwen.com/i13717038/1ee86fed760e840b.png)
SSHClient 封装 Transport
![](https://img.haomeiwen.com/i13717038/ee3b52be6d590a03.png)
SFTPClient常用方法介绍
![](https://img.haomeiwen.com/i13717038/e6a42e6c2ad3132f.png)
SFTPClient常用方法举例
![](https://img.haomeiwen.com/i13717038/63dc8cc78a5682c5.png)
Paramiko的综合使用例子
![](https://img.haomeiwen.com/i13717038/2a015304d2b698ca.png)