python paramiko 解析

Paramiko是Python实现SSHv2协议的库,提供SSH连接、命令执行等功能。核心组件包括client、transport和Channel。client作为入口组件,用于创建SSH连接;transport是核心功能组件,管理连接和数据交互;Channel执行命令和交互式shell操作。在transport中,Transport类负责认证和数据处理,而Channel则用于请求服务端开启并执行命令。
摘要由CSDN通过智能技术生成

简介

  paramiko 是python的一个实现SSHv2协议的一个库,使用paramiko我们可以很方便使用python ssh连接到其它主机.

核心组件

  client: 入口组件,主要用于创建ssh连接,执行命令等入口

  transport: 核心功能组件,控制ssh连接,管理channel,处理ssh server返回数据,发送数据

  channel: 用于执行ssh命令以及interactive 交互方式shell处理

  packet: 解析数据包和压缩数据包

client

SSHClient作为client里面主要类,是作为paramiko一个主要入口类,起到一个门面的作用

  简单使用

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(*args, **kwargs)
stdin, stdout, stderr = ssh.exec_command('ls -a')
print(stdout.read().decode('utf-8'))
ssh.close()

首先初始化一个SSHClient,后面connect和exec_command都是通过transport来执行,下面会具体讲transport

transport

最重要的一个核心类Transport,整个库核心功能都集中到这个类里面,在client.connect方法里面会初始化一个Transport对象,设置一下Transport对象的SSH相关的属性,然后进行相关的认证工作

    def _auth(
        self,
        username,
        password,
        pkey,
        key_filenames,
        allow_agent,
        look_for_keys,
        gss_auth,
        gss_kex,
        gss_deleg_creds,
        gss_host,
        passphrase,
    ):
        """
        Try, in order:

            - The key(s) passed in, if one was passed in.
            - Any key we can find through an SSH agent (if allowed).
            - Any "id_rsa", "id_dsa" or "id_ecdsa" key discoverable in ~/.ssh/
              (if allowed).
            - Plain username/password auth, if a password was given.

        (The password might be needed to unlock a private key [if 'passphrase'
        isn't also given], or for two-factor authentication [for which it is
        required].)
        """
        saved_exception = None
        two_factor = False
        allowed_types = set()
        two_factor_types = {"keyboard-interactive", "password"}
        if passphrase is None and password is not None:
            passphrase = password

        # If GSS-API support and GSS-PI Key Exchange was performed, we attempt
        # authentication with gssapi-keyex.
        if gss_kex and self._transport.gss_kex_used:
            try:
                self._transport.auth_gssapi_keyex(username)
                return
            except Exception as e:
                saved_exception &
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值