【原理】:
ssh是一个协议,OpenSSH是其中的一个开源实现,Paramiko是Python的一个库,实现了SSHv2协议。
有了Paramiko以后,就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对服务器进行操作。
paramiko包含两个核心组件:SSHClient和SFTPClient
SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。
SFTPClient的作用类似于Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操作,如文件上传、下载、修改文件权限等操作。
Paramiko中的几个基础名词:
1、Channel:是一种类Socket,一种安全的SSH传输通道;
2、Transport:是一种加密的会话,使用时会同步创建了一个加密的Tunnels(通道),这个Tunnels叫做Channel;
3、Session:是client与Server保持连接的对象,用connect()/start_client()/start_server()开始会话。
基于用户名和密码的SSHClient方式的登录
这个代码的缺点是一次只能执行一个命令操作
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.145.140',port=22,username='kali',password='kali')
stdin, stdout, stderr = ssh.exec_command('ls -al')