【问题标题】:Paramiko ssh connection without passwordParamiko ssh 连接无密码
【发布时间】:2015-02-05 12:34:21
【问题描述】:

目前,我通过在 ssh.connect 中输入密码,从我的 Windows 桌面登录到 Unix 服务器。有没有办法可以避免提供密码?

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('ltc02.force.com',username = 'user',password = 'pwd')
stdin,stdout,stderr = ssh.exec_command("pwd")

感谢您的支持。

【问题讨论】:

    标签: python python-2.7 python-3.x paramiko


    【解决方案1】:

    是的,您可以使用没有密码的私钥使用公钥身份验证。

    一般的过程是您使用

    在客户端计算机上创建一个新密钥

    ssh-keygen -t rsa

    然后你上传你的公钥到服务器,复制粘贴到:

    .ssh/authorized_keys

    .ssh 目录将位于服务器上您的用户主目录中。

    当然,因为您的私钥没有密码,所以您需要确保采取足够的措施来保护它。

    请注意,这不是 Python 特定的答案。 SSH 公钥是一个标准过程,使用的密钥是标准 RSA(或 DSA)密钥。因此,您应该能够以您选择的任何语言进行 SSH 公钥身份验证。

    【讨论】:

    • 关于如何创建和使用这些键的任何输入?我试图在我的 Windows PC 中安装 M2Crypto 包,但失败了
    • 我相信有一个工具叫PuTTYgen for windows。实际上,您可以尝试使用适用于 Windows 的 PuTTY SSH 客户端来获取公钥。网上有很多 PuTTY 教程(比如这个ualberta.ca/CNS/RESEARCH/LinuxClusters/pka-putty.html
    • 即一旦你可以让你的 SSH 密钥在 PuTTY 中工作,你就可以继续让这些密钥在 Python 中工作。
    • 我会检查Putty,但是Putty生成的pub/priv密钥可以在Python中使用吗?
    • Re:Putty 生成的 pub/priv 密钥可以在 Python 中使用吗? ....是的,我刚刚编辑了我的原始答案。 SSH 公钥身份验证和关联的密钥是标准化的事情......您应该能够以您选择的任何语言执行此操作(取决于可用的库,或者您自己编写代码)。