【问题标题】:Why do I still have to enter password after I entered ssh-agent and ssh-add?为什么我输入 ssh-agent 和 ssh-add 后还要输入密码?
【发布时间】:2015-07-14 19:47:39
【问题描述】:

我正在学习 Ansible,在设置文档中:http://docs.ansible.com/intro_getting_started.html

它说如果我不想每次都输入密码,我可以这样做:

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa

我做到了,但为什么我每次都要输入密码? 然后它说“您可能希望使用 Ansible 的 --private-key 选项”,但我找不到任何文档。这是为了什么以及如何做?

【问题讨论】:

    标签: ssh passwords ansible


    【解决方案1】:

    我不确定 Ansible,但我对 ssh 密钥的工作原理有所了解

    当您使用 ssh-keygen 命令(默认转到 ~/.ssh/id_rsa 文件)生成新的 SSH 密钥时,它会要求您输入密码(密码)
    每当您使用该密钥时,它都会要求您输入该密码。

    如果你用

    创建一个新密钥
    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/YOUR_USERNAME/.ssh/id_rsa_nopass
    Enter passphrase (empty for no passphrase): [just press enter, don't type anything]
    Enter same passphrase again: [just press enter again]
    

    这将在您选择的目录 (/home/user/.ssh) 中创建一个 id_rsa_nopass 私钥文件和一个 id_rsa_nopass.pub 公钥文件

    假设 ansible 设置为正确使用您的 ssh 密钥,您应该可以使用以下命令

    $ ssh-add ~/.ssh/id_rsa_nopass
    

    注意:使用不带密码的 ssh 密钥可能很危险,因为任何人都可以在不知道密码的情况下访问您的设备并进行连接。如果您不介意这一点,那么无密码 ssh 密钥是避免每个人都输入密码的好方法

    编辑:刚刚研究了一下 Ansible,它的基本设置只是在 ssh 服务器上运行命令,对吧?
    在这种情况下,您可能需要将您的公钥添加到您要连接的任何服务器,这通常可以通过命令来完成

    ssh-copy-id -i /path/to/your/public/key/file yourname@yourserver.com -p your_server's_ssh_port
    

    例如,要将之前的 id_rsa_nopass 密钥授权给服务器 example.org 上的帐户 foobar,您可以使用 ssh 端口 10022

    ssh-copy-id -i ~/.ssh/id_rsa_nopass.pub foobar@example.org -p 10022
    

    这将提示您输入 foobar@example.org 的密码,在填写密码后,它将授权该公钥连接到该服务器,并且由于 id_rsa_nopass 没有密码,您现在应该能够在没有任何密码的情况下进行连接密码提示

    【讨论】:

      猜你喜欢
      • 2019-06-10
      • 1970-01-01
      • 2021-03-29
      • 2013-09-30
      • 2012-04-02
      • 2013-03-17
      • 2021-11-24
      • 2014-02-28
      • 2010-11-24
      相关资源
      最近更新 更多