无法通过 AsyncSSH 连接,错误主机密钥不受信任

Has*_*ana 6 python ssh asyncssh

当我运行此脚本时,我收到SSH connection failed: Host key is not trusted错误,但即使连接到此主机以获取密钥,仍会收到此错误。

import asyncio, asyncssh, sys

async def run_client():
    async with asyncssh.connect('172.18.17.9', username="user", password="admin", port=9321) as conn:
        result = await conn.run('display version', check=True)
        print(result.stdout, end='')

try:
    asyncio.get_event_loop().run_until_complete(run_client())
except (OSError, asyncssh.Error) as exc:
    sys.exit('SSH connection failed: ' + str(exc))
Run Code Online (Sandbox Code Playgroud)

小智 6

尝试将known_hosts=None参数添加到 connect 方法中。

\n
asyncssh.connect(\'172.18.17.9\', username="user", password="admin", port=9321, known_hosts=None)\n
Run Code Online (Sandbox Code Playgroud)\n

来自 asyncssh 文档:\n https://asyncssh.readthedocs.io/en/latest/api.html#asyncssh.SSHClientConnectionOptions

\n
\n

known_hosts(请参阅指定已知主机)\xe2\x80\x93(可选)密钥列表\n将用于验证 SSH 握手期间提供的服务器主机密钥。如果未指定,则将在文件 .ssh/known_hosts 中查找密钥。如果将此值显式设置为“无”,\n服务器主机密钥验证将被禁用。

\n
\n


bbu*_*uck -1

这是相关的,但也许不完全是你的救赎:

https://github.com/ronf/asyncssh/issues/132

当你问这个问题时(帮助我们帮助你),你应该问自己的真正问题是,这一切都失败在哪里?通过类比,已知主机就像环境变量一样,当您需要它们时它们不会出现。

编辑:立即引发的问题。找到主机密钥但不可信?唔?

EDIT2:并不是想对你严厉,但我认为这是一个有用的纠正。您有一个可以找到密钥但未知的软件库。您将遇到很多使用 SSH/shell/env var 的场景,而您认为理所当然的事情却是未知的。清晰地思考可以帮助自己并更好地提出问题。