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. 使用Redis分布式锁实现主备

    使用Redis分布式锁实现集群的主备 最近工作中遇到一个问题,我们会调用业务部门提供的HTTP接口获取所有的音视频任务信息,这些任务会被分发到各个机器节点进行处理.有两个方案: 方案一 为每台机器编号 ...

  2. Spring Boot笔记(四) springboot 集成 @Scheduled 定时任务

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.在SpringBoot 项目中使用@Scheduled注解执行定时任务: 配置pom.xml 依赖: ...

  3. JQuery实现对html结点的操作(创建,添加,删除)

    效果图: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  4. Java实现第九届蓝桥杯方格计数

    方格计数 题目描述 如图p1.png所示,在二维平面上有无数个1x1的小方格. 我们以某个小方格的一个顶点为圆心画一个半径为1000的圆. 你能计算出这个圆里有多少个完整的小方格吗? 注意:需要提交的 ...

  5. java实现第六届蓝桥杯生成回文数

    生成回文数 所谓回文数就是左右对称的数字,比如: 585,5885,123321- 当然,单个的数字也可以算作是对称的. 小明发现了一种生成回文数的方法: 比如,取数字19,把它与自己的翻转数相加: ...

  6. PAT 害死人不偿命的(3n+1)猜想

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 3n+1 )砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 195 ...

  7. 【Spring注解驱动开发】组件注册-@ComponentScan-自动扫描组件&指定扫描规则

    写在前面 在实际项目中,我们更多的是使用Spring的包扫描功能对项目中的包进行扫描,凡是在指定的包或子包中的类上标注了@Repository.@Service.@Controller.@Compon ...

  8. pytorch入门2.0构建回归模型初体验(数据生成)

    pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...

  9. 浅谈Unity的脚本执行顺序

    一.添加脚本的顺序 这是一张官方的脚本顺序图 一般,当我们把脚本绑定在游戏对象上时,或者点击绑定好的脚本的reset按钮时,会调用Reset() 当我们初始化一个对象时,会先调用Awake()在调用O ...

  10. SpringMVC+Mybatis初尝试

    一个月前简单学完了SpringMVC框架和Mybatis框架,一直没有使用过,今天主要用它做了个简单的学生管理系统,不过第一次用框架,实现的功能简单,比较low. 注:这里使用的数据库是SQLServ ...