别院牧志知识库 别院牧志知识库
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2025 面试记录
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2025 面试记录
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 辨析

  • Sockets编程

  • Django

  • stackoverflow

  • Flask

  • 全栈之路

    • 基础篇

    • 进阶篇

    • 面向对象

    • 网络编程

    • 操作系统

    • 标准库

    • 第三方库

      • Python 标准库系列之 Memcache 模块
      • Python 标准库系列之 MySQLdb 模块
      • Python 标准库系列之 Paramiko 模块
        • 安装 Paramiko
        • 使用用户名与密码的方式连接
        • 使用密钥的方式连接
        • 文件上传与下载
      • Python 全栈之路系列之 RabbitMQ
      • Python 标准库系列之 Redis 模块
      • Python 标准库系列之 requests 模块
      • Python 全栈之路系列之 scrapy 爬虫
      • Python 全栈之路系列之 SQLAlchemy
      • Python 中更优雅的日志记录方案 loguru
    • Python 全栈之路
  • 面试

  • 代码片段

  • 异步编程

  • 😎Awesome资源

  • PEP

  • Python工匠系列

  • 高阶知识点

  • Python 学习资源待整理
  • 设计模式

  • 好“艹蛋”的 Python 呀!
  • FIFO | 待学清单📝
  • pip 安装及使用
  • 数据分析

  • 源码阅读计划

  • OOP

  • 关于 python 中的 setup.py
  • 并行分布式框架 Celery
  • 七种武器,让你的代码提高可维护性
  • 使用 pdb 调试 Python 代码
  • 每周一个 Python 标准库
  • 🐍Python
  • 全栈之路
  • 第三方库
佚名
2020-05-23
目录

Python 标准库系列之 Paramiko 模块

# Python 标准库系列之 Paramiko 模块

Paramiko是一个 Python 实施SSHv2的协议,提供客户端和服务器的功能。虽然它利用一个 Python C 扩展低级别加密的 paramiko 本身就是围绕 SSH 联网概念的纯 Python 接口。

Paramiko 官网:http://www.paramiko.org/

# 安装 Paramiko

pip3 install paramiko
1

安装之后进入 python 解释器导入模块,如果导入成功则安装成功,否则安装失败.

C:\Users\Administrator>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
1
2
3
4

# 使用用户名与密码的方式连接

# 导入paramiko模块
>>> import paramiko
# 创建SSHClient对象
>>> ssh = paramiko.SSHClient()
# 如果是一个新主机连接,会出现yes/no,AutoAddPolicy自动填写yes的
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
>>> ssh.connect(hostname='192.168.56.100', port=22, username='root', password='123456')
# 执行命令
>>> stdin, stdout, stderr = ssh.exec_command('df -h')
# 获取正确的输出
>>> result = stdout.read()
# 关闭连接
>>> ssh.close()
# 获取到的值
>>> result
b'Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda3        48G  3.3G   45G   7% /\ndevtmpfs        984M     0  984M   0% /dev\ntmpfs           993M     0  993M   0% /dev/shm\ntmpfs           993M  8.9M  984M   1% /run\ntmpfs           993M     0  993M   0% /sys/fs/cgroup\n/dev/sda1       197M  137M   60M  70% /boot\ntmpfs           199M     0  199M   0% /run/user/0\n'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 使用密钥的方式连接

在使用密钥的方面连接之前我们需要先做ssh-key认证,步骤如下:

[root@linux-node1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@linux-node1 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@linux-node1 ~]# chmod 600 ~/.ssh/authorized_keys
1
2
3

然后下载/root/.ssh/id_rsa下载下来,复制到E:\python-intensive-training\目录系,下面是在windows下使用paramiko连接脚本如下

#!/use/bin/env python
# _*_ coding: utf-8 _*_

import paramiko

# 指定密钥的文件
private_key = paramiko.RSAKey.from_private_key_file('E:\python-intensive-training\id_rsa')

# 创建SSH对象
ssh = paramiko.SSHClient()

# 允许连接不在know_hosts文件中的主机,要不然一台新机器去连接它的时候会让你输入yes/no
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器
ssh.connect(hostname='192.168.56.100', port=22, username='root', pkey=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('df -h')
"""
stdin:标准输入
stdout:标准输出
stderr:错误输出
"""

# 获取命令执行的正确结果
result = stdout.read()

# 关闭连接
ssh.close()

# 输出执行结果
print(str(result, encoding='utf-8'))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# 文件上传与下载

#!/usr/bin/python

import paramiko

t = paramiko.Transport(('192.168.56.100', 22))

t.connect(username="root", password="123456")

sftp = paramiko.SFTPClient.from_transport(t)

# 远程目录
remotepath = '/tmp/id_rsa'

# 本地文件
localpath = 'id_rsa'

# 上传文件
sftp.put(localpath, remotepath)

# 下载文件
# sftp.get(remotepath, localpath)

# 关闭连接
t.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
编辑 (opens new window)
#编码#面向对象
上次更新: 2024-07-23, 01:00:43
Python 标准库系列之 MySQLdb 模块
Python 全栈之路系列之 RabbitMQ

← Python 标准库系列之 MySQLdb 模块 Python 全栈之路系列之 RabbitMQ→

最近更新
01
2025 面试记录
05-28
02
提升沟通亲和力的实用策略
03-26
03
工作
07-15
更多文章>
Theme by Vdoing | Copyright © 2019-2025 IMOYAO | 别院牧志
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式