简介
SSH是一个数据交互通信协议,而OpenSSH是SSH协议的一个开源实现。
而在Python的第三方库中,paramiko是实现SSH协议v2版本的通信模块。通过使用paramiko模块,可以在Python代码中直接使用SSH协议,对远程服务器进行操作、类似于通过Linux命令ssh对远程服务器进行操作。
由于paramiko属于Python第三方库,在使用之前需通过pip安装:
pip install paramiko -i http://mirrors.zte.com.cn/pypi/simple/ --trusted-host mirrors.zte.com.cn
介绍
paramiko库包含了两个核心的组件,分别是SSHClient与SFTPClient。
类SSHClient是对SSH会话的封装,该类封装了传输(Transport)、通道(Channel),以及SFTPClient的创建方法(open_sftp),通常用于执行远程命令。
类SFTPClient是对SFTP客户端的封装,用以实现对远程服务器上的文件的操作,如文件上传,文件下载,文件权限修改等操作。
在paramiko中,Channel是一种类socket,即一种安全的SSH传输通道。
Transport是一种加密的会话,使用时会同步创建一个加密的通道,即Channel。
而Session是client与server保持连接的对象。
SSHClient常用方法介绍
一、connect
connect方法实现远程服务器的连接与认证,对于该方法,hostname是必传的参数。方法的具体参数如下:
- hostname,即连接的目标主机,可以是IP地址字符串;
- port,指定端口号;
- username,验证的用户名;
- password,验证的用户密码;
- pkey,私钥方式用于身份验证;
- key_filename,一个文件名或者文件列表,指定私钥文件;
- timeout,可选的tcp连接超时时间;
- allow_agent,是否允许连接到ssh代理,默认为True,表示允许;
- look_for_keys,是否在~/.ssh/中搜索私钥文件,默认为True,表示允许;
- compress,是否打开压缩,默认为False,表示不打开。
二、set_missing_host_key_policy
设置远程服务器没有在know_hosts文件中记录时的应对策略,目前支持三种策略,具体如下:
- AutoAddPolicy,自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认;
- WarningPolicy,用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接;
- RejectPolicy,