使用 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 setuptools:如何在 setup.py 中添加私有存储库 (gitlab)?

    我上传了 2 个包 它们位于我的 gitlab 存储库中 如果我想使用 pip 将它们安装在我的系统中 这很容易 因为 gitlab 可以帮助您 https docs gitlab com ee user packages pypi rep
  • Flask+Nginx+uWSGI:导入错误:没有名为站点的模块

    我安装为http www reinbach com uwsgi nginx flask virtualenv mac os x html http www reinbach com uwsgi nginx flask virtualenv
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 了解 Python 中的酸洗

    我最近接到一项作业 需要以腌制形式放置一本字典 其中每个键引用一个列表 唯一的问题是我不知道腌制形式是什么 谁能给我指出一些好的资源的正确方向来帮助我学习这个概念 pickle 模块实现了一个基本但强大的算法 用于序列化和反序列化 Pyth
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • python 中的 Johansen 协整检验

    我找不到任何有关在处理统计和时间序列分析 pandas 和 statsmodel 的 Python 模块中执行 Johansen 协整检验的功能的参考 有谁知道是否有一些代码可以执行时间序列之间的协整测试 现在 这已在 Python 的 s
  • 使用 scipy curve_fit 拟合噪声指数的建议?

    我正在尝试拟合通常按以下方式建模的数据 def fit eq x a b c d e return a 1 np exp x b c np exp x d e x np arange 0 100 0 001 y fit eq x 1 1 1
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • Python 类型安全吗?

    根据维基百科 https en wikipedia org wiki Type system Type safety and memory safety 如果一种语言不允许违反类型系统规则的操作或转换 计算机科学家就认为该语言是 类型安全的
  • 在 Sphinx 中,有没有办法在声明参数的同时记录参数?

    我更喜欢在声明参数的同一行记录每个参数 根据需要 以便应用D R Y http en wikipedia org wiki Don t repeat yourself 如果我有这样的代码 def foo flab nickers a ser
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X
  • 使用 urllib 编码时保持 url 参数有序

    我正在尝试用 python 模拟 get 请求 我有一个参数字典 并使用 urllib urlencode 对它们进行 urlencode 我注意到虽然字典的形式是 k1 v1 k2 v2 k3 v3 urlencoding 后参数的顺序切

随机推荐

  • 当矩形与另一个矩形重叠时 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