作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我使用 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@myhost
在 authorized_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/
我是一名优秀的程序员,十分优秀!