Paramiko是一个Python实现的SSH2远程安全连接模块,它支持认证及密钥方式。

Paramiko是一个Python实现的SSH2远程安全连接模块,它支持认证及密钥方式。

具体来说,Paramiko是一个用于实现SSHv2协议的模块,它可以用于创建SSH客户端或服务器端。通过使用Paramiko,你可以连接到远程服务器、执行命令、传输文件等操作。Paramiko还支持多种认证方式,包括口令认证和公钥认证,以及多种密钥交换算法和压缩方法。

使用Paramiko模块可以编写Python代码,实现SSH相关功能,例如文件传输、远程执行命令等。

安装方式

python 复制代码
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev 
pip3 install cryptography
pip3 install paramiko

示例:

python 复制代码
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 自动添加主机密钥
ssh.connect('remote_host', username='your_username', password='your_password')
#hostname:连接的目标主机。
#port=SSH_PORT:指定端口,一般默认为22。
#username=None:验证的用户名。
#password=None:验证的用户密码。
#pkey=None:私钥方式用于身份验证。
#key_filename=None:一个文件名或文件列表,指定私钥文件。
#timeout=None:可选的tcp连接超时时间。
#allow_agent=True:是否允许连接到ssh代理,默认为True。
#look_for_keys=True:是否在~/.ssh中搜索私钥文件,默认为True。
#compress=False:是否打开压缩。
#常用方法:
#connect():主要是用于实现和远程服务器的连接与认证。

stdin, stdout, stderr = ssh.exec_command('ls')
output = stdout.read().decode()
print(output)

sftp = ssh.open_sftp()
sftp.put('local_file', 'remote_file')  # 上传文件
sftp.close()

终端示例

python 复制代码
>>> import paramiko, time
>>> connection = paramiko.SSHClient()
>>> connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> connection.connect('192.168.2.51', username='cisco', password='cisco', 
look_for_keys=False, allow_agent=False)
>>> new_connection = connection.invoke_shell()
>>> output = new_connection.recv(5000)
>>> print(output) b"\
r\n*************************************************************************\
r\n* IOSv is strictly limited to use for evaluation, demonstration and 
IOS *\r\n* education. IOSv is provided as-is and is not supported by 
Cisco's *\r\n* Technical Advisory Center. Any use or disclosure, 
in whole or in part, *\r\n* of the IOSv Software or Documentation to 
any third party for any *\r\n* purposes is expressly prohibited 
except as otherwise authorized by *\r\n* Cisco in writing. 
*\r\n*********************************************************************
**\r\nlax-edg-r1#"
>>> new_connection.send("show version | i V\n")
19
>>> time.sleep(3)
>>> output = new_connection.recv(5000)
>>> print(output)
b'show version | i V\r\nCisco IOS Software, IOSv Software (VIOSADVENTERPRISEK9-M), Version 15.8(3)M2, RELEASE SOFTWARE (fc2)\r\nProcessor 
board ID 98U40DKV403INHIULHYHB\r\nlax-edg-r1#'
>>> new_connection.close()
>>>
python 复制代码
>>> import paramiko
>>> connection = paramiko.SSHClient()
>>> connection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> connection.connect('192.168.2.51', username='cisco', password='cisco',
look_for_keys=False, allow_agent=False)
>>> stdin, stdout, stderr = connection.exec_command('show version | i 
V\n') 
Traceback (most recent call last):
<skip>
raise SSHException('SSH session not active') paramiko.ssh_exception.
SSHException: SSH session not active
python 复制代码
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
>>> import paramiko
>>> key = paramiko.RSAKey.from_private_key_file('/home/xxx/.ssh/id_rsa')
>>> client = paramiko.SSHClient()
>>> client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> client.connect('192.168.199.182', username='echou', pkey=key)
>>> stdin, stdout, stderr = client.exec_command('ls -l')
>>> stdout.read()
b'total 44ndrwxr-xr-x 2 echou echou 4096 Jan 7 10:14 Desktopndrwxr-xr-x 2
echou echou 4096 Jan 7 10:14 Documentsndrwxr-xr-x 2 echou echou 4096 Jan 7
10:14 Downloadsn-rw-r--r-- 1 echou echou 8980 Jan 7 10:03
examples.desktopndrwxr-xr-x 2 echou echou 4096 Jan 7 10:14 Musicndrwxrxr-x
echou echou 4096 Jan 7 10:14 Picturesndrwxr-xr-x 2 echou echou 4096 Jan 7 
10:14 Publicndrwxr-xr-x 2 echou echou 4096 Jan 7 10:14 Templatesndrwxrxr-x
2 echou echou 4096 Jan 7 10:14 Videosn'
>>> stdin, stdout, stderr = client.exec_command('pwd')
>>> stdout.read()
b'/home/echou'
>>> client.close()
相关推荐
Hy行者勇哥1 小时前
Python 与 VS Code 结合操作指南
开发语言·python
大力水手(Popeye)1 小时前
Pytorch——tensor
人工智能·pytorch·python
2301_801673014 小时前
8.19笔记
网络·安全
飞翔的佩奇5 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测
larance5 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
搏博6 小时前
基于Python3.10.6与jieba库的中文分词模型接口在Windows Server 2022上的实现与部署教程
windows·python·自然语言处理·flask·中文分词
lxmyzzs7 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
萧鼎8 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
RaymondZhao348 小时前
【全面推导】策略梯度算法:公式、偏差方差与进化
人工智能·深度学习·算法·机器学习·chatgpt
zhangfeng11339 小时前
DBSCAN算法详解和参数优化,基于密度的空间聚类算法,特别擅长处理不规则形状的聚类和噪声数据
算法·机器学习·聚类