pysftp -- paramiko SSHException,来自服务器的错误主机密钥

2023-12-05

我正在尝试通过以下方式连接到远程主机pysftp:

try:
    with pysftp.Connection(inventory[0], username='transit',
                           private_key='~/.ssh/id_rsa.sftp', port=8055) as sftp:
        sftp.put('/home/me/test.file')
except Exception, err:
    print sys.exc_info()
    print err

但是,我遇到了一个奇怪的异常,我找不到太多细节。

(<class 'paramiko.ssh_exception.SSHException'>, SSHException('Bad host key from server',), <traceback object at 0x7fa76269c5a8>)
Bad host key from server

我发现一个相关问题建议我运行ssh-keygen -R [host]更换我的钥匙known_hosts文件——一旦我这样做了,我就得到了一个新的错误:

(<class 'paramiko.ssh_exception.SSHException'>, SSHException('No hostkey for host abc.com found.',), <traceback object at 0x7f6b8520cb48>)
No hostkey for host abc.com found.

现在,如果我尝试 ssh 到该主机,它会再次提示我信任密钥并将其放回我的known_hosts文件,我接受并可以愉快地 ssh 到盒子上。执行此步骤后,如果我尝试再次运行脚本,则会收到原始错误Bad host key from server.

我在这里做错了什么吗?

忍者编辑:我应该提到,以下内容在终端上运行良好:

sftp -i .ssh/id_rsa.sftp -oPort=8055 [email protected]
sftp> put /home/me/test.file

Paramiko 调试输出:

[2016-07-14 10:32:23,809] | paramiko.transport - DEBUG - starting thread (client mode): 0x7f1dab10L
[2016-07-14 10:32:23,810] | paramiko.transport - DEBUG - Local version/idstring: SSH-2.0-paramiko_2.0.1
[2016-07-14 10:32:23,836] | paramiko.transport - DEBUG - Remote version/idstring: SSH-2.0-mod_sftp/0.9.9
[2016-07-14 10:32:23,836] | paramiko.transport - INFO - Connected (version 2.0, client mod_sftp/0.9.9)
[2016-07-14 10:32:23,837] | paramiko.transport - DEBUG - kex algos:[u'ecdh-sha2-nistp256', u'ecdh-sha2-nistp384', u'ecdh-sha2-nistp521', u'diffie-hellman-group-exchange-sha256', u'diffie-hellman-group-exchange-sha1', u'diffie-hellman-group14-sha1', u'diffie-hellman-group1-sha1', u'rsa1024-sha1'] server key:[u'ssh-rsa', u'ssh-dss'] client encrypt:[u'aes256-ctr', u'aes192-ctr', u'aes128-ctr', u'aes256-cbc', u'aes192-cbc', u'aes128-cbc', u'blowfish-ctr', u'blowfish-cbc', u'cast128-cbc', u'arcfour256', u'arcfour128', u'3des-ctr', u'3des-cbc'] server encrypt:[u'aes256-ctr', u'aes192-ctr', u'aes128-ctr', u'aes256-cbc', u'aes192-cbc', u'aes128-cbc', u'blowfish-ctr', u'blowfish-cbc', u'cast128-cbc', u'arcfour256', u'arcfour128', u'3des-ctr', u'3des-cbc'] client mac:[u'hmac-sha2-256', u'hmac-sha2-512', u'hmac-sha1', u'hmac-sha1-96', u'hmac-md5', u'hmac-md5-96', u'hmac-ripemd160', u'[email protected]'] server mac:[u'hmac-sha2-256', u'hmac-sha2-512', u'hmac-sha1', u'hmac-sha1-96', u'hmac-md5', u'hmac-md5-96', u'hmac-ripemd160', u'[email protected]'] client compress:[u'none'] server compress:[u'none'] client lang:[u''] server lang:[u''] kex follows?False
[2016-07-14 10:32:23,837] | paramiko.transport - DEBUG - Kex agreed: diffie-hellman-group1-sha1
[2016-07-14 10:32:23,838] | paramiko.transport - DEBUG - Cipher agreed: aes128-ctr
[2016-07-14 10:32:23,838] | paramiko.transport - DEBUG - MAC agreed: hmac-sha2-256
[2016-07-14 10:32:23,838] | paramiko.transport - DEBUG - Compression agreed: none
[2016-07-14 10:32:23,935] | paramiko.transport - DEBUG - kex engine KexGroup1 specified hash_algo <built-in function openssl_sha1>
[2016-07-14 10:32:23,936] | paramiko.transport - DEBUG - Switch to new keys ...
[2016-07-14 10:32:23,952] | paramiko.transport - DEBUG - Bad host key from server
[2016-07-14 10:32:23,952] | paramiko.transport - DEBUG - Expected: ssh-rsa: '\x00\x00\x00\x07ssh-rsa\x00\x00\x00\x01#\x00\x00\x01\x01\x00\xb9\x05\xddUF?o\xeet\xad\x06=\x83\xd6\xa8\xb1\x06\x03\xb7\xb5\xa5C\x80\x0c~\xa8\x83[w!\x16y\xe6@\xdajX\x90+c\xd4\x18X\xd7\xff\x05\x06\xe2\x19\x96\x8c&J\x0c\x1f\xd2\xefC\xa5\xc6\xbb\x1f\xc9N\xd7r\x12\xd29\x1f\xe1\xb6F\xe8\xdc(w~\x1f\xea\xea\xfdUT?^V\xe8=\'\xd60\xdc\xc44gYnn\xfe\xe8^?\x8b\xa8"\xda\xc7(\x18\xc3<\xa9\x1c\xa1)A3_\x00<$y\xbe\xd4$\xc2S\xe6\x93\xe3B^\xef\xe6\xbf\xb5\x88\xd6\x98EeP\x9aZm\xa7\xc5&\xffn\xc1lb\x1e[\x8d!*\xfa\xa3\xce\xb6\xe7\xd5U\r<E\xd2\xe1\x89.\xed%o\xefju\xde>=*b\xaeBO\xbf>\xe4/,\xd5@R\xc5\x9e\xac\xf5\x80\x04\xa9s)3\xb5\xbc\xc2\xcc\xe7\xa7\xb8\x04>uA\xb4O\xa6\xf3\xdb\x9c2\xb5"%n\x89\t\x8192\xe7#n\x82p\xee\xdf\x16]\xb3A\x93\xebm|\xb9\xd7\nXsmw\x81\xa9'
[2016-07-14 10:32:23,953] | paramiko.transport - DEBUG - Got     : ssh-rsa: "\x00\x00\x00\x07ssh-rsa\x00\x00\x00\x01#\x00\x00\x01\x01\x00\xc6_\xea\xc1yF\xd5\xdd\x146\x8c\x0eU\xeah[3\x16VP\xde2\xbe~\xed\x92\xef\xb81\x14\xd8\xb7\xa7\x08\xa3\x02\xa8\n\x9f\x7f{\x896\x1b\x89/,\x92\x86\xc7M\xa5\x7f0Cj\xe6\x93\xb0\x0eup%\xa2p\x9d3i\xaco\xf7\x14\xfb\xfe\x8f}a\xcbJ :\xdf\xdd1\x10\xe8;\xd3%\x98k')\xf8\x1c\xc1D\x97\\\xcc\xe6\xf5*6\xc2\xf1\xb8\xcf!\xeed\x1co\xc1\x03\xb4v\xc0,?\xda\xc7\xa3\xd9\xe8\xafy\xf5k\xf7\xe8\xa1\x9cr\xfa\x81\xcd\xee\xd3\xeao\xa7\x072\xce\x8b\xf9\x95\x03\xa1\xe2\xaf\t\xa2\xba\xa1O\xbc\xbf}}\x9e\xc0t\x9bC\x88\xbd\x18'\x00?-\xa0\x05\x83I\x1ah#I\xfc\xebc$\xfc\xa0\xad\xeeP\x80\x88Bh_\xeb`\xb6\xab\x8bC\x83\x987\xba\x05\xb14\xea\x90\xac>\x99&\x99\xb3\xf9\nC\xdf\xfd\xba<\xf8\xaf\xca\xaf\xfa\x15+\x1e,L\xa1\xf0\x1e\xa5`\xbd>\xf4\xa63)\xae7F\xd2\xc9\xf2\xf3A\xa4\x10u\xa9"
(<class 'paramiko.ssh_exception.SSHException'>, SSHException('Bad host key from server',), <traceback object at 0x7fb87f143ef0>)
Bad host key from server
[2016-07-14 10:32:24,037] | paramiko.transport - DEBUG - EOF in transport thread

解决方法
这似乎是某种错误pysftp包装...我不确定。恢复原生paramiko我的连接很好,所以我现在就这样。当前工作代码:

rsa_key = paramiko.RSAKey.from_private_key_file('~/.ssh/the_key', password='myPassword')
transport = paramiko.Transport((inventory[0],8055))
transport.connect(username='theUser', pkey=rsa_key)
sftp = paramiko.SFTPClient.from_transport(transport)
print sftp.listdir()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pysftp -- paramiko SSHException,来自服务器的错误主机密钥 的相关文章

  • pandas 读取列中带有额外逗号的 csv

    我正在阅读一个基本的 csv 文件 其中各列用逗号分隔 列名称如下 userid username body 但是 正文列是一个可能包含逗号的字符串 显然这会导致一个问题 pandas 会抛出一个错误 CParserError Error
  • 使用不带引号的块样式的 Python YAML 转储

    如何使用 PyYAML 加载和转储 YAML 以便它尽可能地使用原始样式 我有 Python 来加载和转储 YAML 数据 例如 import sys import yaml def represent dictorder self dat
  • 如何将 typeshed 与 mypy 一起使用?

    我克隆了typeshed https github com python typeshed但我不知道如何告诉 mypy 使用它包含的类型提示 我在 mypy help 中没有看到任何选项 mypy 存储库确实包含对 typeshed 存储库
  • Ruby 相当于 Python 的多处理模块是什么?

    为了在 Ruby 或 Python 中获得真正的并发性 我需要创建新的进程 Python 使用以下命令使这变得非常简单multiprocessing模块 它抽象了所有 fork wait 的好处 让我专注于我的代码 Ruby 有类似的东西吗
  • 使用 setuptools (pip) 时如何打印警告和错误

    我正在使用 setuptools 来打包代码 以便可以使用以下命令轻松安装它 cd project name pip install 在设置过程中 我想警告用户有关预先存在的配置文件的信息 并在系统上打印一些安装后说明 例如 etc pro
  • 在 PyCharm 中启用终端模拟

    很多人告诉过我和PyCharm 2 7 的 PyCharm 发行说明 https www jetbrains com pycharm whatsnew whatsnew 27 html吹捧那个PyCharm包括完整的终端仿真 我认为这是关于
  • 在 Python 中解压存档时出现错误

    我使用 Python 下载 bz2 文件 然后我想使用以下方法解压存档 def unpack file dir file cwd os getcwd os chdir dir print Unpacking file s file cmd
  • os.walk 无需深入研究下面的目录

    我该如何限制os walk只返回我提供的目录中的文件 def dir list self dir name whitelist outputList for root dirs files in os walk dir name for f
  • 如何为 PyYAML 编写代表程序?

    我想要一个自定义函数来序列化任意 python 对象 就像 json dump 函数有一个名为 default 的可选参数 如果对象不是 json 可序列化的 它应该是 json 转储器将调用的函数 我只是想从 json 包中执行相当于此操
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • Java SFTP使用JSch上传,但如何覆盖当前文件?

    我正在尝试使用 JSch 通过 SFTP 将两个文件上传到服务器 如果目录为空 则上传文件效果很好 但我想一遍又一遍地上传相同的文件 只需更改内部的 id 但我不知道如何执行此操作 JSch 中有一些名为 OVERWRITE 的静态参数 但
  • 如何忽略 Sentry 捕获中的某些 Python 错误

    我已将 Sentry 配置为捕获 Django Celery 应用程序中的所有错误 它工作正常 但我发现一个令人讨厌的用例是当我必须重新启动我的 Celery 工作人员 PostgreSQL 数据库或消息服务器时 这会导致数千种各种 无法访
  • 如何循环遍历列表中除最后一项之外的所有项? [复制]

    这个问题在这里已经有答案了 Using a for循环 如何循环遍历列表中除最后一项之外的所有项 我想遍历一个列表 检查每个项目与后面的项目 我可以在不使用索引的情况下做到这一点吗 for x in y 1 If y是一个生成器 那么上面的
  • Spacy-nightly (spacy 2.0) 问题“thinc.extra.MaxViolation 大小错误”

    显然成功安装了 spacy nightly spacy nightly 2 0 0a14 和英语模型 en core web sm 后 我在尝试运行它时仍然收到错误消息 import spacy nlp spacy load en core
  • Python for 循环前瞻

    我有一个 python for 循环 其中我需要向前查看一项以查看在处理之前是否需要执行某项操作 for line in file if the start of the next line 0 perform pre processing
  • 用于监视文件夹和更新数据库的 Python 守护进程

    这专门用于管理 MP3 文件 但它应该可以轻松地适用于任何包含大量文件的目录结构 我想找到或编写一个守护程序 最好用Python 来监视一个包含许多子文件夹的文件夹 这些子文件夹都应该包含X个MP3文件 每当添加 更新或删除文件时 它都应该
  • tkinter 库 treectrl 转换为 exe 安装程序时出现 cx_freeze 错误

    我使用的是 python 版本 3 7 我使用了这个名为 treectrl 的外部库 当我运行 py 文件时它工作得很好 但是当我使用 cx freeze 转换为 exe 文件时 它给了我错误 NomodulleFound 名为 tkint
  • VSCode IntelliSense 认为 Python 'function()' 类存在

    VSCode IntelliSense 正在完成一个名为的 Python 类function 这似乎不存在 例如 这似乎是有效的代码 def foo value return function value foo 0 But functio
  • Mac 无法安装 Tensorflow

    我检查了我的 pip3 和 python3 版本 tensorflow MacBook Pro de Hector 2 tensorflow hectoresteban pip3 V pip 10 0 1 from Users hector
  • 无法将 类型的对象转换为张量

    我正在编写一个使用 Flask 框架的客户端 python 文件 并在 docker 机器中运行它 因此 这需要一个输入文件并生成它的输出 但它会抛出无法转换为张量的错误 tf app flags DEFINE string server

随机推荐

  • 使用 sed 在句点后插入空格

    我有一堆文件 其句子结尾如下 Next sentence 我想在句号后面插入一个空格 并非所有出现的 但是 没有空格 因此我的正则表达式检查句号后的下一个字符是否是大写字母 因为我要检查句点后的一个字符 所以我不能只进行替换 to 并且因为
  • 我可以为空的 Git 存储库创建工作树吗?

    我有一个空的 Git 存储库 即它尚未包含任何提交 有没有办法使用创建工作树git worktree add命令 与 no checkout选项 对于这个回购 我的意思是指示 Git 不要将新创建的工作树与任何HEAD yet In a c
  • 查询/tags/tag-name/media/recent端点,如何避免私人照片

    我目前正在定期访问 tags tag name media recent 端点 并将一些符合特定条件的媒体保存到我自己的数据库中 有时 我会得到一张私人照片 这意味着在我的画廊中 当我显示所述图像时 其中一些图像显示为损坏的链接 因为 In
  • 球体中的平均值

    我正在尝试计算圆内像素的平均值 将来这需要扩展到 3D 但现在 2D 解决方案已经可以帮助我了 从图像中可以看出 有些像素完全位于圆圈内 但有些像素仅部分位于圆圈内 部分位于圆圈内的部分也只需对平均值做出部分贡献 像素是正方形的 我希望这会
  • UILabel高度计算

    I have UILabel文本会根据服务器数据动态更改 有时数据太长 使我UILabel变成多行 有什么方法可以计算我的身高UILabel 你可以使用这个 var labelHeight CGFloat labelHeight theLa
  • 消除警报 XCUITest

    我正在尝试消除我的 XCUITest 套件上的警报 我目前正在使用 app alerts buttons OK tap 使用此功能可以消除警报 但应用程序会继续尝试点击按钮 然后失败并显示错误消息 UI 测试失败 未找到警报匹配项 这是控制
  • 将 JSON 文件对象拆分为多个文件

    我的文件包含太多 JSON 格式的数据对象 格式如下 type FeatureCollection features type Feature properties geometry type Polygon coordinates 37
  • 如何将 Polymer 元素导入到 plunker (plnkr.co)、jsBin 和 jsFiddle 等代码游乐场中?

    问题 In 这个普朗克 我想导入 Polymer 1 0 元素
  • JFreeChart:如何在同一图表上绘制折线图和散点图

    我有两组数据 int x1 1 2 3 4 5 6 7 8 9 10 int y1 1 2 3 5 6 8 9 10 14 11 int x2 1 2 3 4 5 6 7 8 9 10 int y2 0 2 3 5 0 8 9 8 14 1
  • 参考酶导入错误

    我正在尝试使用酶和玩笑为反应本机组件编写基本测试 我收到一条错误 暗示酶未正确导入 SearchPage it starts spinner when page is loading ReferenceError enzyme is not
  • Pandas:如何将列表转换为按列分组的矩阵?

    我有一个 pandas 数据框 其中第一列 CUSTOMER 是客户的姓名 并且客户的姓名对于客户购买的每个产品 Product 重复一次 Customer Product Count John A 1 John B 1 John C 1
  • 为什么 goroutine 中的 fmt.Println 不打印一行?

    我有以下代码 package main import net import fmt import bufio func main conn net Dial tcp irc freenode net 6667 reader bufio Ne
  • 使用 Windows Batch 脚本在 FOR 循环中计数

    谁能解释一下吗 我可以使用 Windows 命令提示符循环计数 使用以下方法 SET A XCOUNT 0 loop SET A XCOUNT 1 echo XCOUNT IF XCOUNT 4 GOTO end ELSE GOTO loo
  • 是否有基于任务的 System.Threading.Timer 替代品?

    我是 Net 4 0 任务的新手 我无法找到我认为是基于任务的计时器替换或实现 例如周期性任务 有这样的事吗 Update 它取决于 4 5 但这有效 public class PeriodicTask public static asyn
  • CakePHP - 删除级联不起作用

    在 CakePHP 中 我有一个模型 Type 和 SpecificType SpecificType 属于一个 Type type id 字段 当我删除SpecificType的条目时 如何才能同时删除Type 我把它作为 this gt
  • .filter() 函数返回未定义而不是过滤数组

    我正在尝试理解 javascriptArray filter方法 为什么下面的代码会返回undefined 我缺少什么 function driversWithRevenueOver driver revenue driver filter
  • 使用OpenGL绘制圆的一部分?

    我只想画一个部门 部分3d 圆的 给出 2 个角度 起点 终点 圆心坐标 半径和宽度 你能帮我做那件事吗 计算圆上点的公式 给定半径 圆心 x0 y0 和角度 以弧度为单位 float x radius cos angle x0 float
  • C++ 高效使用 new 运算符

    当用 new 实例化一个类时 如果不删除内存 我们会通过对象的重用获得哪些好处 新的流程是怎样的 是否发生上下文切换 新的内存被分配了 谁来分配 操作系统 你在这里问了几个问题 Instead of deleting the memory
  • 是否存在与 PE 基址重定位等效的 ELF?

    我一直在研究一些 ELF 二进制文件的反汇编 我注意到了这一点 0000000000401020 lt start gt 401020 31 ed xor ebp ebp 401022 49 89 d1 mov r9 rdx 401025
  • pysftp -- paramiko SSHException,来自服务器的错误主机密钥

    我正在尝试通过以下方式连接到远程主机pysftp try with pysftp Connection inventory 0 username transit private key ssh id rsa sftp port 8055 a