我可以手动ssh2到远程主机,但paramiko不能,为什么?

2024-05-17 06:22:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过公钥身份验证使用paramiko到ssh2到远程主机,我按照以下步骤设置密钥:

在本地:

    Local> ssh-keygen
    Generating 1024-bit dsa key pair
    9 o.oOo..oOo.o
    Key generated.
    Passphrase :
    Again :
    Private key saved to /home/local/.ssh2/id_dsa_1024_a
    Public key saved to /home/local/.ssh2/id_dsa_1024_a.pub

    Local> cd ~/.ssh2
    Local> echo "IdKey id_dsa_1024_a" > identification
    Local> scp id_dsa_1024.pub remote@remote-host:~/.ssh2/local.pub

远程:

    Remote> ssh-keygen
    ...omit...
    Remote> cd ~/.ssh2
    Remote> echo "Key local.pub" > authorization

完成上述操作后,我可以使用ssh remote@remote-host登录。

但是,我未能使用python的paramiko模块登录远程主机:

    conn = paramiko.SSHClient()
    conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    conn.connect(remote-host, 22, username=remote,password='')

总是错误:身份验证失败。

我很困惑。:(一)


Tags: key身份验证idhostparamikossh2远程remote
2条回答

连接时是否尝试设置key_filename选项?我不确定paramiko是否会像SSH CLI客户端那样在~/.ssh中自动查看您的私钥。

paramiko documentation

import os
import paramiko
ssh = paramiko.SSHClient()
ssh.load_host_keys(os.path.abspath('.ssh/known_hosts'))
ssh.connect(some_host_in_known_hosts)

今天早上使用Python2.7很好地解决了同样的问题

相关问题 更多 >