python教程—如何通过python Paramiko与ppk公钥进行ssh连接-Python实用宝典

python教程—如何通过python Paramiko与ppk公钥进行ssh连接

我使用Paramiko通过ssh连接到服务器。基本身份验证工作得很好,但我不明白如何与公钥连接。

我使用Paramiko通过ssh连接到服务器。

基本身份验证工作得很好,但我不明白如何与公钥连接。

当我连接putty时,服务器告诉我:

    Using username "root". Authenticating with public key "rsa-key@ddddd.com" Passphrase for key "rsa-key@ddddd.com": [i've inserted the passphrase here] Last login: Mon Dec 5 09:25:18 2011 from ...

我用这个ppk文件连接到它:

    PuTTY-User-Key-File-2: ssh-rsa Encryption: aes256-cbc Comment: rsa-key@dddd.com Public-Lines: 4 [4 lines key] Private-Lines: 8 [8 lines key] Private-MAC: [hash]

使用basic auth,我得到的错误(从日志)是:

    DEB [20111205-09:48:44.328] thr=1 paramiko.transport: userauth is OK DEB [20111205-09:48:44.927] thr=1 paramiko.transport: Authentication type (password) not permitted. DEB [20111205-09:48:44.927] thr=1 paramiko.transport: Allowed methods: ['publickey', 'gssapi-with-mic']

我试图包含ppk文件并将其设置为auth_public_key,但是没有成功。

你能帮我吗?

回答

好的@Adam和@Kimvais是对的,paramiko不能解析.ppk文件。

因此,方法是(也要感谢@JimB)将.ppk文件转换为openssh私钥格式;可以使用Puttygen,如下所述

那么,与它建立联系就很简单了:

    import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('<hostname>', username='<username>', password='<password>', key_filename='<path/to/openssh-private-key-file>') stdin, stdout, stderr = ssh.exec_command('ls') print stdout.readlines() ssh.close()

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
2

发表评论