ssh-add 命令不会将我的身份添加到 ssh-agent

bjo*_*vin 25 ssh ssh-agent

我刚刚安装了 ubuntu 13.10,我正准备将我的身份添加到我的 ssh-agent 中,所以我打开了一个终端并执行了此操作

bjorgvin@buntu:~$ ssh-add -l
The agent has no identities.
bjorgvin@buntu:~$ ssh-add
bjorgvin@buntu:~$ ssh-add -l
The agent has no identities.
bjorgvin@buntu:~$ 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Rad*_*anu 31

来自man ssh-add

ssh-add 将私钥身份添加到身份验证代理 ssh-agent(1)。当不带参数运行时,它会添加文件 ~/.ssh/id_rsa、~/.ssh/id_dsa、~/.ssh/id_ecdsa 和 ~/.ssh/identity.[...]

除了用户之外,任何人都不应读取身份文件。请注意,如果其他人可以访问身份文件,则 ssh-add 会忽略身份文件。

因此,由于The agent has no identities.错误,您可能没有这些文件,或者其他人可以访问这些文件。您可以使用以下命令检查这些:

ls -l ~/.ssh
Run Code Online (Sandbox Code Playgroud)

此外,在您运行ssh-add命令后,运行echo $?以查看上一个命令的错误状态。如果退出状态返回 0,则该命令已成功执行。如果退出状态返回非零值,则命令无法执行。

查看man ssh-add更多信息。

  • 出于某种原因,我在输入密码后运行 `ssh-add` 时没有任何输出,(根据 `$?` 返回 1 失败。我尝试 `chmod 600 ~/.ssh/id_rsa*` 没有幸运。我用 `ssh-keygen` 从头开始​​生成了一个新密钥,然后它工作了。可悲但至少现在没问题(失败的密钥是使用 `ssh-keygen -t rsa -b 4096 -C "your_email@example .com"`,这次我只运行了 `ssh-keygen`)。 (4认同)
  • 我必须按此顺序执行以下操作:(如有必要,生成新的 ssh 密钥,并确保将 .pub 密钥添加到 github),然后`cd ~/.ssh && ls -lah` 以查看读/写权限在 .ssh 文件夹中,使用 `chmod 400 myKey` 更改所有密钥,然后使用 `ssh-add **ABSOLUTE**pathToKey` 如果您不添加 **ABSOLUTE** 路径,它将不起作用。然后,使用 `ssh -vT git@github.com` 测试它 (2认同)

Toh*_*huw 5

除了上述注意事项之外,我发现如果您使用的是备用 shell,则可能需要对其进行配置以加载 ssh-agent。例如,在 Zsh 中,必须添加ssh-agentpluginsin .zshrc

此方法在使用最新 Zsh 的 Ubuntu 17.10 上效果很好

其他人发现使用id_ed25519密钥可以rsa在没有插件的情况下工作。添加ssh-agent到 后~/.zshrc,重新启动外壳exec "$SHELL"并执行:ssh-add ~/.ssh/id_ed25519

Enter passphrase for ~/.ssh/id_ed25519: 
Identity added: ~/.ssh/id_ed25519 (user@host)
Run Code Online (Sandbox Code Playgroud)