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客户端的封装,用以实现远程文件操作,如文件上传、下载、修改文件权限等操作。

Paramiko的基本使用

ssh 远程操控 模式

python 远程操控主要用这个

使用

ssh = paramiko.SSHClient() # 创建ssh 连接对象
info = ('127.0.0.1', 22, 'root', 'mima') # 主机信息
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 设置自动连接策略
ssh.connect(hostname=info[0], port=info[1], username=info[2], password=info[3]) # 创建连接
comm = f"echo hello paramiko" # shll 命令

stdin, stdout, stderr = ssh.exec_command(comm) # 在远程主机执行命令
# 返回结果分别是  stdin 命令对象  stdout 输出结果stderr 错误对象

# 解析对象
res, err = stdout.read(), stderr.read()
result = res.decode("utf-8")
err = err.decode("utf-8")
ssh.close()# 关闭连接

SFTP文件传输 模式

使用

host_ip = "127.0.0.1"
    user_name = 'yonghu'
    password = 'mima'
    port = 22
    t = paramiko.Transport((host_ip, port)) # 创建对象
    t.connect(username=user_name, password=password)  # 登录远程服务器
    sftp = paramiko.SFTPClient.from_transport(t)  # sftp传输协议对象

    sftp.get(remote_path, local_path) # 下载文件到本地
    sftp.put(local_path, remote_path) # 上传文件到本地
    t.close()

  

  

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的配置。此为默认选项

  

 

  

 

  

 

#