我试图通过Paramiko在两台Solaris服务器之间进行通信。我出于安全原因不能使用我的私钥,所以我试图使用id_rsa.pub。本来我试过这个:Python:通过公钥进行Paramiko身份验证“不是有效的RSA”
ssh.connect(hostname=host, username=user, key_filename=path-to-key)
...其中ssh是一个SSHClient对象。最终我的谷歌搜索引导我相信,连接真的期望一个私钥,而不是公开的,所以我尝试了解决方案here。与此不同的是,它使用transport.auth_publickey来进行身份验证,我希望能够绕过任何格式化的挂断。这里的显著部分:
try:
ki = paramiko.RSAKey.from_private_key_file(filename=key_file)
except Exception, e:
print 'Failed loading {0}. {1}'.format(key_file, e)
return
我检查了我的KEY_FILE,它是在我的id_rsa.pub文件,该文件是OpenSSH格式(我想肯定指点;它开始使用ssh-RSA和与用户端@主办)。尽管如此,我始终如一地遇到了上述例外情况,e是“不是有效的RSA私钥文件”。纵观代码,我能找到的最接近的错误在于BER的解码步骤。我对BER或OpenSSH并不了解,但谷歌似乎认为它们是相同的东西,或者至少是兼容的。
这里有很多类似的问题的答案,但没有任何表明我的解决方案无法正常工作的答案。我没有看到一些奇怪的格式,我没有将密钥文件与密钥本身混淆,等等。
任何人都有成功使用id_rsa.pub或Paramiko的等价物?最好在* nix上。我也打开,“嘿,白痴!当有事情变得更容易时,你为什么使用Paramiko!” ......只要批评是建设性的。
现在有道理。我真正的问题是我作为一个用户运行程序,但试图连接另一个用户。这是一个权限问题,出于安全原因,我无法更改权限。感谢您的澄清。 – user1772459