输入ssh-agent和ssh-add后,为什么还要输入密码?

时间:2015-07-14 19:47:39

标签: ssh passwords ansible

我正在安装文档中学习Ansible:http://docs.ansible.com/intro_getting_started.html

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

  //list of hits..
  //
  "aggregations": {
        "province": {
            "buckets": [
                {
                    "key": "province1",
                    "doc_count": 200
                },
                {
                    "key": "province2",
                    "doc_count": 162
                },
                {
                    "key": "province3",
                    "doc_count": 162
                }
                // even if there is more possible provinces
                // I don't want to see them

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

1 个答案:

答案 0 :(得分:2)

我不确定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]

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

然后您应该能够使用以下命令,假设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

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

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

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

相关问题