gpt4 book ai didi

Paramiko - "Not a valid OpenSSH/RSA/... private key"错误

转载 作者:行者123 更新时间:2023-12-02 08:04:42 27 4
gpt4 key购买 nike

当我使用 paramiko 2.4.0 时,我继续收到如下错误:

SSHException: not a valid OPENSSH private key file

虽然我可以使用 key ssh连接到机器,并且可以访问远程。

key 由以下方式生成:

ssh-keygen -t rsa

然后我将公钥复制到远程机器:(路径也可以是私钥,是一样的)

ssh-copy-id -i /path/to/public/key root@remote_host

为什么?

最佳答案

原来paramiko中检测关键错误的机制是...太简单了,有时甚至很天真。如#340所示和 #387 ,有一些已知问题。

最后证明不是 key 的问题;该消息令人困惑。这是用户名/权限/重复的问题。

<强> paramiko会尝试使用您在 key 中使用的用户登录,因为它假设该用户也存在于远程计算机上。但我认为这个逻辑是错误的,因为基本上当您使用加密登录时,您不需要用户名;您拥有私钥,服务器拥有公钥,这就是它所需要的全部。

想象一下这个场景:您使用 Windows 生成 key ,并且您是 john在这里,您的公钥将具有 john@myhostauthorized_keys文件。当你 connect()没有username ,您实际上是使用 john 登录的在另一台Linux机器上,可能没有这个用户。如果您使用的是 Linux,那就更好了,因为如果您使用 root 生成 key ,在另一台机器上有 root ,还有root可能对公钥文件具有正确的权限。

所以,最后我能够通过以下方式解决问题:

  • 在远程计算机中,检查 authorized_keys文件以消除相同 user@host 的任何重复行.
  • 生成公钥后,将其更改为 user其中是远程计算机上的有效用户。是的,这看起来很奇怪,但就是这样paramiko作品。然后将其复制到远程。
  • 调用 connect() 时,传入username arg 与您在公钥中输入的用户名相同。
  • 确保您在公钥中使用的用户对 authorized_keys 拥有正确的权限文件及其父文件 .ssh文件夹。至少r许可。

关于 Paramiko - "Not a valid OpenSSH/RSA/... private key"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49511209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com