返回顶部
首页 > 资讯 > 后端开发 > Python >python paramiko模块讲解
  • 530
分享到

python paramiko模块讲解

模块pythonparamiko 2023-01-31 05:01:00 530人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

windows下有很多非常好的ssh客户端,比如Putty。在python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢。使用Paramiko库中的PyCrypto能够让

windows下有很多非常好的ssh客户端,比如Putty。在python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢。使用Paramiko库中的PyCrypto能够让你轻松使用SSH2协议。

Paramiko的安装方法网上有很多这样的帖子,这里就不描述了。这里主要讲如何使用它。Paramiko实现SSH2不外乎从两个角度实现:SSH客户端与服务端。

首先让我们理清以下几个名词:

  • SSHClient:包装了Channel、Transport、SFTPClient

  • Channel:是一种类Socket,一种安全的SSH传输通道;

  • Transport:是一种加密的会话(但是这样一个对象的Session并未建立),并且创建了一个加密的tunnels,这个tunnels叫做Channel;

  • Session:是client与Server保持连接的对象,用connect()/start_client()/start_server()开始会话。

具体请参考Paramiko的库文档:Http://docs.paramiko.org/en/2.0/index.html

下面给出几个常用的使用案例:

SSH客户端实现方案一,执行远程命令

这个方案直接使用SSHClient对象的exec_command()在服务端执行命令,下面是具体代码:

 #实例化SSHClient
    client = paramiko.SSHClient()    #自动添加策略,保存服务器的主机名和密钥信息
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())    
    #连接SSH服务端,以用户名和密码进行认证
    client.connect(ip,username=user,passWord=passwd)    #打开一个Channel并执行命令
    stdin,stdout,stderr = client.exec_command(command)
    #打印执行结果
    print stdout.readlines()    #关闭SSHClient
    client.close()
   SSH客户端实现方案二,执行远程命令

这个方案是将SSHClient建立连接的对象得到一个Transport对象,

以Transport对象的exec_command()在服务端执行命令,下面是具体代码:

#实例化SSHClientclient = paramiko.SSHClient()
#自动添加策略,保存服务器的主机名和密钥信息
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接SSH服务端,
以用户名和密码进行认证client.connect(ip,username=user,password=passwd)
#实例化Transport,
并建立会话Sessionssh_session = client.get_transport().open_session()if ssh_session.active:
    ssh_session.exec_command(command)    print ssh_session.recv(1024)
client.close()
SSH服务端的实现

实现SSH服务端必须继承ServerInterface,并实现里面相应的方法。具体代码如下:

import socketimport sysimport threadingimport paramiko

host_key = paramiko.RSAKey(filename='private_key.key')class Server(paramiko.ServerInterface):
    def __init__(self):
    #执行start_server()方法首先会触发Event,如果返回成功,is_active返回True
        self.event = threading.Event()    #当is_active返回True,进入到认证阶段
    def check_auth_password(self, username, password):
        if (username == 'root') and (password == '123456'):            
        return paramiko.AUTH_SUCCESSFUL       
         return paramiko.AUTH_FaiLED   
          #当认证成功,client会请求打开一个Channel
    def check_channel_request(self, kind, chanid):
        if kind == 'session':            return paramiko.OPEN_SUCCEEDED
        #命令行接收ip与portserver = sys.argv[1]
ssh_port = int(sys.argv[2])#建立sockettry:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    #tcp socket
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind((server, ssh_port))   
    sock.listen(100)    
    print '[+] Listening for connection ...'
    client, addr = sock.accept()except Exception, e:   
     print '[-] Listen failed: ' + str(e)
    sys.exit(1)print '[+] Got a connection!'try:    #用sock.accept()返回的socket实例化Transport
    bhSession = paramiko.Transport(client)    #添加一个RSA密钥加密会话
    bhSession.add_server_key(host_key)
    server = Server()    try:    #启动SSH服务端
        bhSession.start_server(server=server)    except paramiko.SSHException, x:        
        print '[-] SSH negotiation failed'
    chan = bhSession.accept(20) 
    print '[+] Authenticated!'
    print chan.recv(1024)
    chan.send("Welcome to my ssh")    while True:        try:
            command = raw_input("Enter command:").strip("\n") 
            if command != 'exit':
                chan.send(command)                print chan.recv(1024) + '\n'
            else:
                chan.send('exit')                print 'exiting'
                bhSession.close()                raise Exception('exit')        except KeyboardInterrupt:
            bhSession.close()except Exception, e:    print '[-] Caught exception: ' + str(e)    try:
        bhSession.close()    except:        pass
    sys.exit(1)
使用SFTP上传文件
import paramiko#获取Transport实例tran = paramiko.Transport(("host_ip",22))
#连接SSH服务端
tran.connect(username = "username", password = "password")
#获取SFTP实例
sftp = paramiko.SFTPClient.from_transport(tran)
#设置上传的本地/远程文件路径
localpath="/root/Desktop/Python/NewNC.py"remotepath="/tmp/NewNC.py"
#执行上传动作
sftp.put(localpath,remotepath)

tran.close()


使用SFTP下载文件
import paramiko#获取SSHClient实例client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接SSH服务端
client.connect("host_ip",username="username",password="password")
#获取Transport实例tran = client.get_transport()
#获取SFTP实例
sftp = paramiko.SFTPClient.from_transport(tran)

remotepath='/tmp/NewNC.py'localpath='/root/Desktop/NewNC.py'
sftp.get(remotepath, localpath)

client.close()



--结束END--

本文标题: python paramiko模块讲解

本文链接: https://lsjlt.com/news/189136.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python paramiko模块讲解
    Windows下有很多非常好的SSH客户端,比如Putty。在Python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢。使用Paramiko库中的PyCrypto能够让...
    99+
    2023-01-31
    模块 python paramiko
  • python paramiko模块
        paramiko模块是python中很重要的模块,他的功能呢主要分为两大块功能。一个是模拟SSH功能登录到远程主机上执行命令。一个是模拟SFTP功能传输文件。paramiko支持密码登陆方式和免密码的私钥登录方式。密码登陆方式代码如...
    99+
    2023-01-31
    模块 python paramiko
  • Python 之 paramiko 模块
    paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接1.安装#paramiko模块的安装需要先安装PyCrypto模块 wget https://pypi.python.or...
    99+
    2023-01-31
    模块 Python paramiko
  • python的paramiko模块
      paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。  由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, ...
    99+
    2023-01-31
    模块 python paramiko
  • python的paramiko模块报错解
    写了一个Python脚本内容如下:#-*- coding:utf-8 -*- __author__ = 'kai' import paramiko import sys,os host = sys.argv[1] user = 'zk' ...
    99+
    2023-01-31
    报错 模块 python
  • python模块paramiko与ssh
      paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连...
    99+
    2023-01-31
    模块 python ssh
  • Python paramiko模块(实现
    开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 安装paramiko模块 pip3 install paramiko 基于用户密码方式 import paramiko # 创建...
    99+
    2023-01-31
    模块 Python paramiko
  • python paramiko模块的使
    一般使用paramiko的功能就是通过ssh远程执行命令,远程(上传、下载)传输文件等等依赖包:/usr/local/python27/bin/pip install pycrypto下载包 paramiko#wget http://en....
    99+
    2023-01-31
    模块 python paramiko
  • python下paramiko模块ssh
        python下有个paramiko模块,这个模块可以实现ssh登录linux服务器,下面贴出代码,注意,我在centos5.6下,python2.6.5,paramiko-1.7的版本下测试成功。。。#!/usr/bin/env p...
    99+
    2023-01-31
    模块 python paramiko
  • python paramiko模块简介
    python paramiko模块简介一:简介    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。    由于使用的是python这样的能够跨平台运行的语言,所以所有py...
    99+
    2023-01-31
    模块 简介 python
  • Python学习—paramiko模块实
    paramiko模块 paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。 import paramiko # ssh root@ip # 创建一个ssh对象 ...
    99+
    2023-01-31
    模块 Python paramiko
  • Python paramiko模块的安装
    paramiko是Python语言编写的遵循SSH2协议,支持加密和认证方式,连接远程服务器执行命令或者上传下载文件。一、安装paramikopip3 install paramiko二、使用用户名密码方式远程执行命令import para...
    99+
    2023-01-31
    模块 Python paramiko
  • python模块之paramiko学习<
    简介: paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器。 安装所需软件包: http://ftp.dlitz.net/pub/dlitz/crypto...
    99+
    2023-01-31
    模块 python paramiko
  • python paramiko模块管理S
    下面是两种使用paramiko连接到linux服务器的代码 方式一: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ...
    99+
    2023-01-31
    模块 python paramiko
  • python模块讲解
    一、模块分类:1.标准库模块:python自带的,直接使用import可直接使用;2.第三方库:外部的使用,需要先下载(pip install module_name)3.程序自定义模块:自己定义的模块 二、模块调用(import)的流程1...
    99+
    2023-01-31
    模块 python
  • Python33 paramiko模块
    paramiko模块 ssh登录 需要打开cmd,通过 pip install paramiko 命令来安装paramiko模块。 import paramiko #创建SSH对象 ssh = paramiko.SSHClient() ...
    99+
    2023-01-31
    模块 paramiko
  • Python通过paramiko模块备份
    1.过程思路 备份配置前,先保存交换机running config到starup config 交换机通过tftp备份配置文件 批量备份交换机配置(通过excel文件保存交换机IP) name ip SUZ-SW-101 ...
    99+
    2023-01-31
    备份 模块 Python
  • Python使用Paramiko模块实现
    paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输以及远程命令执行。 通过安装包安装: wget ...
    99+
    2023-01-31
    模块 Python Paramiko
  • Python Paramiko模块的安装与使用详解
    一、前言 常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。而使用paramiko可以很好...
    99+
    2022-06-04
    详解 模块 Python
  • python3导入paramiko模块
    这些指令包括paramiko 2及以上。如果你想安装paramiko 1。x,请参见安装(1.x)。然而,1.x依赖于不安全的依赖,所以升级是强烈鼓励。推荐的方式得到Paramiko是安装最新的稳定版本通过PIP:$ pip install...
    99+
    2023-01-31
    模块 paramiko
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作