使用 Paramiko 进行多重身份验证(密码和密钥)

2023-11-30

我有以下代码:

import paramiko
policy = paramiko.client.WarningPolicy()
client = paramiko.client.SSHClient()
client.set_missing_host_key_policy(policy)
username = '...'
password = '...'
file_path = '...'
pkey = paramiko.RSAKey.from_private_key_file(file_path)
client.connect('...', username=username, password=password, pkey=key)
sftp = client.open_sftp() 

从文档来看,它似乎应该有效。一切都成功,但是当代码命中时client.open_sftp它用一个炸弹来轰炸SSHException: Unable to open channel.和交通(从client.get_transport) 处于活动状态但未经过身份验证。我也无法为此启用调试日志记录(我正在尝试logging.getLogger('paramiko').setLevel(logging.DEBUG)没有成功。)

关于我可以从哪里开始调试这个非常模糊的错误消息有什么想法吗?


抱歉回复晚了,但这个问题真的很难找到任何信息,所以我想为其他陷入这个问题的人发布一个解决方案。

在绞尽脑汁试图解决这个问题后,我找到了一个解决方案,这要归功于 Doug Ellwanger 和 Daniel Brownridge 发布的一些代码。该问题似乎是由使用更多交互风格处理多因素身份验证的方式引起的。

import paramiko
import threading

... 

username = '...'
password = '...'
file_path = '...'
pkey = paramiko.RSAKey.from_private_key_file(file_path)
sftpClient = multifactor_auth('...', 22, username, pkey, password)

...

def multifactor_auth_sftp_client(host, port, username, key, password):
    #Create an SSH transport configured to the host
    transport = paramiko.Transport((host, port))
    #Negotiate an SSH2 session
    transport.connect()
    #Attempt authenticating using a private key
    transport.auth_publickey(username, key)
    #Create an event for password auth
    password_auth_event = threading.Event()
    #Create password auth handler from transport
    password_auth_handler = paramiko.auth_handler.AuthHandler(transport)
    #Set transport auth_handler to password handler
    transport.auth_handler = password_auth_handler
    #Aquire lock on transport
    transport.lock.acquire()
    #Register the password auth event with handler
    password_auth_handler.auth_event = password_auth_event
    #Set the auth handler method to 'password'
    password_auth_handler.auth_method = 'password'
    #Set auth handler username
    password_auth_handler.username = username
    #Set auth handler password
    password_auth_handler.password = password
    #Create an SSH user auth message
    userauth_message = paramiko.message.Message()
    userauth_message.add_string('ssh-userauth')
    userauth_message.rewind()
    #Make the password auth attempt
    password_auth_handler._parse_service_accept(userauth_message)
    #Release lock on transport
    transport.lock.release()
    #Wait for password auth response
    password_auth_handler.wait_for_response(password_auth_event)
    #Create an open SFTP client channel
    return transport.open_sftp_client()

我希望这有帮助,它对我的​​项目有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Paramiko 进行多重身份验证(密码和密钥) 的相关文章

  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 在centos上设置jenkins:ssh密钥和git的问题

    经历了很多问题 但似乎没有什么能解决我的问题 或者更准确地说 我不确定我是否正确地完成了整个事情 所以这里是 已安装centos 6 3操作系统 然后我按照以下指南安装詹金斯 https wiki jenkins ci org displa
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 当矩形与另一个矩形重叠时 OpenCV 连接轮廓

    我有以下输入图像 我的目标是绘制红色区域的轮廓 为此 我有以下代码 导入CV2 Read image src cv2 imread images jpg cv2 IMREAD GRAYSCALE Set threshold and maxV
  • IntelliJ IDEA Grails 没有看到 Jar

    我试图在 Linux 系统上的 Grails 项目中引用 IntelliJ IDEA 9 0 2 中的类 我将依赖项添加到BuildConfig groovy dependencies specify dependencies here u
  • “Substring” GridView BoundField 对象

    谁能告诉我如何对 GridView BoundField 对象进行子字符串化 到目前为止我已经尝试过了 但还没有成功 谢谢
  • 实体框架一对一映射问题

    使用VS 2010 beta 2 ASP NET MVC 我尝试创建一个实体框架文件并从数据库中获取数据 关系存在一些问题 因此我开始进行调整 但对于简单的一对一关系 我不断收到以下错误 错误 1 错误 113 多重性在关系 FK User
  • SWFTools 分段错误

    使用 swftools 中的 pdf2swf 将 PDF 转换为 SWF 时 出现分段错误 核心转储 错误 有没有人遇到过这个或知道可能出了什么问题 我在错误发生之前收到的通知是 NOTICE File contains jpeg pict
  • Google API - 每次都强制授予权限

    我正在使用 Google API PHP 客户端 每次我尝试登录时 我都被迫向应用程序授予权限 下面是我的代码 我基本上是访问 Google API for Analytics require once lib apiClient php
  • cvReprojectImageTo3D -2d 图像的 3d 建模问题 -

    我非常需要你关于这个问题的帮助 我正在尝试用 2D 图像对一个简单的场景进行 3D 建模 我使用 2 张图像 左 右 著名的筑波场景 http www cc gatech edu classes AY2003 cs7495 fall Pro
  • php 警告:strtotime() 错误

    我已将 joomla 和 wordpress 文件从旧服务器更改为新服务器 在前端和管理端 它的工作没有任何错误 但在数据库 phpmyadmin 部分它显示了一些像这样的警告消息 Warning strtotime function st
  • Post/Put 请求的路由错误(乘客标头)

    我遇到了一个奇怪的问题 经过一系列研究后无法更接近 我有几个通过 Carrierwave 上传文件的表单 当我上传信息时 部分路线被切断 我认为 例如 我有一个多部分表单提交到 https domain programs 223 add f
  • 线性回归 scala.MatchError:

    在 Spark 1 6 1 和 2 0 中使用 ParamGridBuilder 时出现 scala MatchError val paramGrid new ParamGridBuilder addGrid lr regParam Arr
  • SwiftUI:更新变量时导航链接会弹出

    我遇到这样的问题 更新变量时导航链接会弹出 这有点令人困惑 因为这种行为不会发生在应用程序的其他地方 但我正在做同样的事情 首先 有一个符合可识别性的 Vehicle 结构 在内容视图中 它显示在滚动视图中的 NavigationView
  • 使用类型保护时出现奇怪的范围问题

    假设我们有这样的打字稿代码 interface A bar string const isA
  • 在 MySQL 表之间将 string/varchar 转换为日期

    我有一个大型 PHP 项目 我一直在为自己的业务开发该项目 我有一个 MySQL 表 大约有 2600 个条目 我想 修复 其中的日期 我当前的表有 3 个包含字符串日期的 VARCHAR 列 我想将它们转换为重复的表 但在途中将它们更改为
  • 英特尔开源uPNP SDK 绝对是0文档,为什么?

    基本上 这是地址 http opentools homeip net dev tools for upnp 它们是推荐用于 upnp 的 dll 因为它们比微软的 upnp dll 更好地实现了标准 但英特尔开源 upnp 工具绝对没有文档
  • a href / h:link 结果 / h:button 结果方法在页面加载期间自动调用,无需任何点击

    我有 3 个页面 其中有 3 个链接 我尝试用它们来实现h link或者只是一个 a 标签 但在这两种情况下 每当我导航到该页面时 连接到这些链接的方法都会被调用 这是 a 标签实现 a href bean gotoMySrchie a a
  • 作曲家在更新时被杀

    我遇到了问题 我尝试将新包安装到我的 Laravel 4 项目中 但当我跑步时php composer phar update我明白了 Loading composer repositories with package informati
  • 一堆数字中的“e”[重复]

    这个问题在这里已经有答案了 可能的重复 e 000 是什么数字 Found 2 4397e6 in 枚举教程 打印结果 2439700 0 什么是e意思是 但我不认为它是原始数据类型 It s the exponent in scienti
  • Pine脚本系列[string]到字符串转换

    我正在尝试从数组中读取符号 字符串 但是array get返回一个Series string 对象 而security只接受简单的字符串 我尝试转换为字符串 但它仍然给出 不接受系列 字符串 参数 错误 有办法让这项工作发挥作用吗 vers
  • 收集时出现奇怪的异常

    当我尝试添加 插入 删除到集合 或任何更改集合的操作 时 出现以下异常 集合已初始化 插入的项不为 null 且与集合 T 类型相同 任何人都可以告诉我为什么会发生这种情况吗 运行时遇到致命错误 错误的地址是0x60f41744 在线程上0
  • 使用 Paramiko 进行多重身份验证(密码和密钥)

    我有以下代码 import paramiko policy paramiko client WarningPolicy client paramiko client SSHClient client set missing host key