paramiko简介
一、什么是paramiko
要想明白什么是paramiko,要先明白ssh协议。
二、什么是ssh协议
ssh全称是Secure Shell (翻译:安全的外壳),根据字面意思就可以知道是和安全相关的协议,官方说法是IETF制定的在应用层基础上的安全网络协议。 专门为了远程登录会话提供的安全协议。由于ssh传输数据都是压缩过的,所以在传输速度上会加快,目前ssh协议已经成为linux系统的标准配置。(具体的ssh协议的安全机制和实现原理请各位小伙伴们自行百度)
三、paramiko介绍
看完第二部分小伙伴们应该已经明白了什么是ssh,而paramiko是python的一个库,使用paramiko我们可以直接使用Python代码对远程服务器进行操作(不用面对冰冷的命令窗口,就是舒服),这样就不用直接使用ssh命令操作!!!
四、paramiko核心组件介绍
1. SSHClient: 主要是用于执行远程命令
2. SFTPClient: 作用类似于linux的sftp命令,用来实现远程操作文件,对文件上传、下载和修改文件权限
五、SSHClient 的介绍
1. 常用的方法有以下几种:connect():主要是用于实现和远程服务器的连接与认证
需要的参数如下:
def connect(
self,
hostname,
port=SSH_PORT,
username=None,
password=None,
pkey=None,
key_filename=None,
timeout=None,
allow_agent=True,
look_for_keys=True,
compress=False,
sock=None,
gss_auth=False,
gss_kex=False,
gss_deleg_creds=True,
gss_host=None,
banner_timeout=None,
auth_timeout=None,
gss_trust_dns=True,
passphrase=None,
disabled_algorithms=None,
):
从源码种可以看出 hostname是必须要填写的参数,用来指定要连接的主机,port 是要连接的端口,一般默认为22,username为用户名,password为密码,pkey则是私钥方式去验证身份,key_filename则是指定私钥文件地址。主要的是这几个参数。
2. set_missing_host_key_policy():设置远程服务器没有在know_hosts文件中记录时的应对策略。策略目前有三种
AutoAddPolicy 自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认
WarningPolicy 用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接
RejectPolicy 自动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项
import paramiko
# 第一步实例化 SSHClient,获取对象
client=paramiko.SSHClient()
# 设置自动添加策略,不添加的话如果不在本地know_hosts文件记录的主机则无法连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机,
client.connect(hostname='你要连接的ip', port=22, username='你的用户名', password='你的用户密码')
# 建立通道并执行命令 stdout 为正确的输出 stderr为错误的输出
stdin,stdout,stderr=client.exec_command('df -h') client.close()
2. 密钥连接方式
# 获取密钥位置
private=paramiko.RSAKey.from_private_key_file('/Users/ch/.ssh/id_rsa') #实例化SSHClient
client = paramiko.SSHClient() #自动添加策略,保存服务器的主机名和密钥信息,如果不添加,那么不再本地know_hosts文件中记录的主机将无法连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接SSH服务端,以用户名和密码进行认证
client.connect(hostname='10.0.0.1',port=22,username='root',pkey=private)
七 、SFTPClient 常用方法的介绍
from_transport(
cls
,t) 创建一个已连通的SFTP客户端通道
put(localpath, remotepath, callback
=
None
, confirm
=
True
) 将本地文件上传到服务器 参数confirm:是否调用stat()方法检查文件状态,返回ls
-
l的结果
get(remotepath, localpath, callback
=
None
) 从服务器下载文件到本地
mkdir() 在服务器上创建目录
remove() 在服务器上删除目录
rename() 在服务器上重命名目录
stat() 查看服务器文件状态
listdir() 列出服务器目录下的文件
import paramiko # 获取Transport实例
tran = paramiko.Transport(('10.0.0.3', 22)) # 连接SSH服务端,使用password
tran.connect(username="root", password='')
# 或使用
# 配置私人密钥文件位置
private = paramiko.RSAKey.from_private_key_file('/Users/root/.ssh/id_rsa')
# 连接SSH服务端,使用pkey指定私钥
tran.connect(username="root", pkey=private) # 获取SFTP实例
sftp = paramiko.SFTPClient.from_transport(tran) # 设置上传的本地/远程文件路径
localpath = "/Users/root/Downloads/1.txt"
remotepath = "/tmp/1.txt" # 执行上传动作
sftp.put(localpath, remotepath)
# 执行下载动作
sftp.get(remotepath, localpath) tran.close()
文章参考:https://www.cnblogs.com/xiao-apple36/p/9144092.html#_label2_2
欢迎大家进入QQ群讨论关于Python的问题:515458373
paramiko简介的更多相关文章
- 堡垒机paramiko模块
paramiko简介: 模拟ssh客户端,使用ssh协议,基于sftp协议等做批量管理.例如处理用ssh登陆一千台机器执行同一个命令,或下载上传文件等需求 基于用户名密码登录执行命令: import ...
- Python网络模块Paramiko基本使用
一.Paramiko简介 首先来看谁创造了paramiko,是一个名叫Jeff Forcier创建了paramiko项目.项目主页:http://www.paramiko.org,可以去看上面有很多相 ...
- python学习之路网络编程篇(第五篇)
paramiko简介 paramiko 是基于Python实现的SSH2远程安装连接,支持认证及秘钥方式.可以实现远程命令执行.文件传输.中间SSH代理等功能. paramiko安装 #!/bin/b ...
- python paramiko模块简介
一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...
- python paramiko模块简介及安装
一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...
- python安装paramiko模块
一.简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...
- 如何进行服务器的批量管理以及python 的paramiko的模块
最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...
- Python Paramiko模块安装和使用
1.简介 大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了. 使用par ...
- paramiko学习
1. ssh简介 2. ssh私有key/共有key的区别 3. paramiko的常规使用
随机推荐
- laravel中select2多选,初始化默认选中项
项目中有发送消息功能,需要能通过搜索,多选用户,来指定发送人.使用 select2 插件来完成. select2 的 html 代码如下: <div class="form-group ...
- 前端之json,ajax和jsonp
json json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数据格式 ...
- windows server 2008 r2 安装 vs2017 无法进入安装界面问题解决方法
在 windows server 2008 r2 版本操作系统上安装 vs2017 经常出现下载进度条结束后没有任何反应问题,一般是因为安装程序兼容性造成的,解决方案如下: 将 C:\Program ...
- 深入C#并行编程(2) -- 使用线程
一.可以使用位于命名空间System.Threading中的Thrad类开启线程: //声明一个新的线程 Thread myThread = new Thread(LoopFunc); //传递一个T ...
- Web前端基础(5):CSS(二)
1. 盒模型 在CSS中,"box model"这一术语是用来设计和布局时使用,然后在网页中基本上都会显示一些方方正正的盒子.我们称为这种盒子叫盒模型. 盒模型有两种:标准模型和I ...
- PHP+Ajax微信手机端九宫格抽奖实例
PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现.支持可以设置中奖概率等. 奖品列表 <div class="lottery ...
- Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效
我们通过 yum 的方式安装完Docker环境后,它默认的存储位置是 /var/lib/docker,默认的 pid 存放位置是 /var/run/docker.pid. 如果仅仅是做测试,我们可能没 ...
- Xamarin.Forms 移动开发
Xamarin 提供两种原生app开发技术:1. Xamarin Native, 包括 Xamarin.Android, Xamarin.iOS, Xamarin.Mac 2. Xamarin 跨平台 ...
- Python数值类型和序列类型
int.float.bool这三个数值类型和常用序列类型的定义和使用 数值类型的基本计算 序列类型的索引取值.切片.成员运算等序列类型的通用操作 complex(复数).decimal(定点数).ma ...
- Ubuntu12.04配置永久静态ip地址
1 切换到 root 用户 先临时切换到root用户(因为我不想每打一个命令都要在前面加上sudo) $ sudo -i 然后,输入密码临时切换到root用户.如下图: 2 配置IP 打开 /etc/ ...