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

标签 python linux authentication ssh paramiko

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

在本地:

    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='')

总是报错:认证失败。

我很困惑。 :(

最佳答案

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

paramiko documentation

关于python - 我可以手动 ssh2 到远程主机,但 paramiko 不能,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11965806/

相关文章:

c - gcc - 参数 "buf"与原型(prototype)不匹配

php - 如何使用 cookie 自动重新登录用户

c# - 使用客户端证书的智能卡身份验证

python - sqlalchemy 中的外连接

python - 为什么在 Python 中创建 namedtuple 时必须提供类型名作为第一个参数

linux - 将 init 转换为 systemd

linux - NFS 实现,ubuntu 发送空的 nfs_fh3?

authentication - 登录失败 : unknown user name or bad password

python - python 生成器中的 next() 方法工作得很奇怪

python - 将子图添加到现有图形?