Python3中的paramiko模块,基于SSH用于连接远程服务器并执行相关操作

  http://docs.paramiko.org/en/2.1/

SSHClient 用于连接远程服务器并执行基本命令

import paramiko

# 创建SSH客户端对象
ssh = paramiko.SSHClient() # 允许连接不再know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器
ssh.connect(hostname="172.16.110.218", port=22, username="root", password="******") # 执行命令
stdin, stdout, stderr = ssh.exec_command("ls /local/jet") # 获取命令执行结果
result = stderr.read()
result = result if result else stdout.read()
print(str(result.decode("gbk"))) # 关闭连接
ssh.close()

1.使用用户名密码连接


import paramiko

# 读取私钥文件
private_key = paramiko.RSAKey.from_private_key_file("e:\\id_rsa") # 创建SSH对象
ssh = paramiko.SSHClient() # 允许连接不再known_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器
ssh.connect(hostname="172.16.110.218", port=22, username="root", pkey=private_key) # 执行命令
stdin, stdout, stderr = ssh.exec_command("ls /local/jet")
# 获取命令执行结果
result = stderr.read()
result = result if result else stdout.read()
print(str(result.decode("gbk"))) # 关闭连接
ssh.close()

2.使用私钥文件连接


import paramiko
from io import StringIO key_str = """-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQEA6eXFQDFRT+tbtnsw44+16fZa1cZF7nouFVRuIuEZx93Gu9Kr
jBW2MFO/uyREHFK20xQzfX/jcD6/R1Yxh7jtLtN/uIUC3mV6yV/WjTmidH1ABlvq
wWyF2i6Q0ZS3bmznuvi/Z1BVJQan9DaH17aQSA/xsKM08OPEO8PK7tuaXlzokj/7
Tb14vOUnxN8C79iBcifoIlq6zpu2SlJpu/YUc3jX6nqJEtG/XwYHfTvwXGwlLCtD
VOb8NtwjggmRbELNZ6QCY8rNo+xUP+9tnp6xa6io8gDg7yswaAvQBxe3F6NZCtc/
sOceTKUIosYZi45tDqfL9YashOvbUNjkSLXQZQIBIwKCAQANXZY+LrQwc9la4nfS
fT2YVzhj/LOJ+FpnnmyxiTSsVdDXiGGS+e0nVT4n83GbN+0wohGSJJCnVAruIi63
TGVTIgdMX18/6Iqsa+Bf12hebY6hRxS6mHytYb8h6z2uieFbJCgxyhN+dWiu3otr
aYSWZ0+jsY3/IvVFPmNeGy1kejp2qDYWxznzQwCCXpuVNJwXgYjTzdSDGm/GQeao
sSuQlz6eRwI06KTuKw1s9tuMpcyhcvqWA7cApR5vNoGQVdUiYKdBuljr7hoo3oPX
NdIuml09IpwyEnc1DDmpR1ynlFadScAyNLa6GQYI8y6tz5mudRiHxskDHG2Y0pl2
XlqTAoGBAPiaKEi/cApypdcensuaBmhKlnGyzsg2qPY2v0Uy7L8mSfDxumkRfJN1
PRao0bAsIwH0sTz4ImXU9ObXnV2Etrg+oCPTJ0hCjnc2Irfl4v+yvicbxrklbkxC
kWlcfW2TQ/h38mLZ93veu0j67eXYhgZQ7dPMFXcupPFutfAI8cFPAoGBAPDbl///
rvgpKse8yJSiuW2MNpv0+euhpBwGEeAA7Nrq2B8m5XljbeWh14Xhij4S86YuHeUb
g5PWnagQMliJrgNPaG+SZnFAlxM+lrKCjdOJXSIoXHpdeb4FJHWYOXQPu3TSWjlo
VSS1M9YLOILRV2VQuMrhWnef1WvvvXaoUN4LAoGBAL/HYOepn5MH/EbdG2ndOCSR
T3xIG9xHbGYqO8eq8SW+c438TflIAQQJ++zoocJrMPLhVYbOC+gn8B/K5xxBzsil
VvcQmqV1LBLR/YaMxQ5lUNxXQYeDRnVX7IR6jKT8k4UpVJVmUTOr0k496rift9j8
mjWsEI8j+5WtLUQkKDYJAoGAPe9S+K92Io4+M1xuF5eOxGXiKBpsJqXoXvo/HFgC
ZC3Ci6rqjO2ui4FjTk/wWRrQ8De+i17YsPysMofSbonNqRRrT+PRMxCb4GCNJpaZ
f4m43OXOox9Z0cbO3Gj41LOWmmH58YE6dydH1/RBuz0lGg1xWL2a64+ABc/u4/9l
QGkCgYAt3cW6UxKVdWejiZ/PRzsffdKuPjm9tTZu9hVBW8CzJD1byaeT8czjKtzv
kKwhV8yqG0ZGqmGbxc00zJLh4pk1J45Nh0dLzAD0T6SskmmJQrJ+k1KPFzqDHj1H
9KRVifIb6WKYBdWF6JXo2nBhlsSymBGPXSnY4YXbsNfWGQDm6g==
-----END RSA PRIVATE KEY-----
"""
private_key = paramiko.RSAKey(file_obj=StringIO(key_str)) # 连接服务器
transport = paramiko.Transport(('172.16.110.218', 22))
transport.connect(username='root', pkey=private_key)
ssh = paramiko.SSHClient()
ssh._transport = transport # 执行命令
stdin, stdout, stderr = ssh.exec_command('df') # 获取命令执行结果
result = stderr.read()
result = result if result else stdout.read()
print(str(result.decode("gbk"))) # 关闭连接
transport.close()

3.使用私钥字符串连接

SFTPClient 用于连接远程服务器并执行上传下载

import paramiko

# 连接远程服务器
transport = paramiko.Transport(("172.16.110.218", 22))
transport.connect(username="root", password="*****") # 生成SFTPClient对象
sftp = paramiko.SFTPClient.from_transport(transport) # 上传文件get('local_path', 'remote_path')
sftp.put("/local/script/demo.py", "e:\\demo.py")
# 下载文件get('remote_path','local_path')
sftp.get("e:\\demo.py", "/local/script/demo.py") # 关闭连接
transport.close()

1.实现与远程服务器的文件上传与下载

参考资料

  http://www.cnblogs.com/wupeiqi/articles/5095821.html

  http://www.cnblogs.com/qq1207501666/p/6780469.html

Python3-paramiko模块-基于SSH的远程连接模块的更多相关文章

  1. Python远程连接模块-Telnet

    Python远程连接模块-Telnet 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 虽然现在主流的python版本还是2.7,相信2020年python程序员都会偏向Python ...

  2. Linux 使用 ssh 命令远程连接另一台 Linux

    用 Linux 系统的 ssh 命令远程连接另一台 Linux 机器的命令 #ssh 用户名@主机名(IP地址) 例: #ssh root@10.41.24.138                  ...

  3. paramiko模块(基于SSH用于连接远程服务器)

    paramiko模块,基于SSH用于连接远程服务器并执行相关操作 class SSHConnection(object): def __init__(self, host_dict): self.ho ...

  4. 【Ansible】 基于SSH的远程管理工具

    [Ansible] 参考文档:[http://www.ansible.com.cn/docs/intro.html] 和ansible类似的工具还有saltstack,puppet,sshpass等, ...

  5. Linux 安装 python3.6 ,并且配置 Pycharm 远程连接开发

    Linux下安装Python3.6和第三方库   如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!! ...

  6. sshfs基于ssh挂载远程目录

    为了像本地一样访问远程主机上的目录,通常我们会在远程主机上使用nfs来导出目录,并在本地主机上mount这个nfs文件系统.如果是windows系统,则使用cifs或samba的方式来访问. 但可能我 ...

  7. 【控制连接实现信息共享---linux和设备下ssh和远程连接telnet服务的简单搭建】

    SSH的配置 空密码登陆ssh server 如果要登录ssh server通常要在server和client之间采取具有共同加密的秘钥,若每次当client想要了:连接ssh server时都要手工 ...

  8. 怎样使用 ssh 命令远程连接服务器?

    以 Git Bash 和 阿里云 ECS云服务器 为例, 想要进行远程连接, 可以使用 ssh 用户名@服务器IP 进行连接. 如下: 注意: 1. 密码输入时是没有提示的 2. root 是超级管理 ...

  9. ssh隧道远程连接mysql

    有时候比如一些云主机,没有开放3306端口,这里可以用ssh隧道来连接数据库,更加安全 注意点: 1.本地ssh可以登录远程服务器,(密码或者秘钥) 2.远程数据库需要赋权限给隧道端的ip 命令: s ...

随机推荐

  1. C#线程 并行线程

    第五部分 并行线程   在本节中,我们将介绍Framework 4.0新增的利用多核处理器的多线程API: 并行LINQ或PLINQ Parallel 类 任务并行性构造 并发集合 自旋锁和自旋等待 ...

  2. Hello, CTF

    0x01 拿到题目后查壳,发现什么也没有,32位vc++ 0x02 放到IDA里,F5反编译,得到下图 很容易我们就看到了比较的函数,以及出现wrong和success的字符串,所以接下来就是仔细分析 ...

  3. 小谢第8问:ui框架的css样式如何更改

    目前有三种方法, 1.使用scss,增加样式覆盖,但是此种方法要求css的className需要与框架内的元素相一致,因此修改时候需要特别注意,一个父级的不同就可能修改失败 2.deep穿透,这种方法 ...

  4. Rocket - diplomacy - NodeHandle相关类

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA   介绍NodeHandle相关的类.     ​​   1. NoHandle   顶层类(tra ...

  5. 我终于看懂了HBase,太不容易了...

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在我还不了解分布式和大数据的时候已经听说过HBa ...

  6. 使用Python代码制作GIF动态图

    使用Python  PIL.Image 制作GIF图片: import  PIL.Image                      相关模块 img = Image.open(img_name)  ...

  7. Java实现 LeetCode 427 建立四叉树

    427. 建立四叉树 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络.网络中每一格的值只会是真或假.树的根结点代表整个网络.对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相 ...

  8. Java实现 蓝桥杯VIP 算法训练 大小写判断

    问题描述 给定一个英文字母判断这个字母是大写还是小写. 输入格式 输入只包含一个英文字母c. 输出格式 如果c是大写字母,输出"upper",否则输出"lower&quo ...

  9. Java实现汉诺塔问题

    1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus is possible for using animation. e ...

  10. 信道估计(channel estimation)图解——从SISO到MIMO原理介绍

    1. 引言 在所有通信中,信号都会通过一个介质(称为信道),并且信号会失真,或者在信号通过信道时会向信号中添加各种噪声.正确解码接收到的信号而没有太多错误的方法是从接收到的信号中消除信道施加的失真和噪 ...