使用 SSH 指定 IdentityFile

Tro*_*oy 26 ssh key-authentication

我正在尝试采用更简化的方法来建立与远程服务器的 SSH 客户端连接。我创建了一个公钥/私钥对,并用于ssh-copy-id将公钥安装到远程服务器上。

但是,它仍然要求输入密码,除非我将身份文件的路径放入类似ssh -i ~/.ssh/mykey user@host. 我是否必须输入此内容才能通过公钥身份验证绕过密码?

为了绕过这个,我.bashrc使用这个路径创建了一个别名。然而,这是做到这一点的方式吗?或者这只是服务器允许公钥的问题,所以我可以使用通常的ssh user@host

Dop*_*oti 38

如果您能够成功地将密钥对身份验证与 一起使用ssh -i ~/.ssh/mykey user@host,则可以通过 SSH 客户端配置轻松实现自动化。

例如,如果您将其添加到您的~/.ssh/config文件中:

Host hostname
  User username
  IdentityFile ~/.ssh/mykey
  IdentitiesOnly yes # see comment in answer below
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地ssh hostname,你的用户名和身份文件设置将由你的config文件处理,你就可以参加比赛了,正如他们所说。

IdentityFile指令(-i用于ssh覆盖的开关)有一个默认设置,它将查找~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519, 和~/.ssh/id_rsa; 私钥的任何其他文件名必须在config文件中或-i在命令行中指定。

如果您将 IdentityFile 添加到 ssh 配置中,您会发现客户端仍然发送默认密钥(请参阅 ssh -vv 输出)。当使用具有多个帐户的 github 等站点时,这可能会出现问题。如果您希望 ssh 仅使用您指定的密钥,则需要包含“IdentitiesOnly yes”。

  • “IdentitiesOnly”指令救了我的命。我收到“登录尝试次数过多”错误,因为 ssh 客户端正在发送我在正确密钥之前拥有的其他密钥。 (5认同)
  • @Troy我认为这已经太晚了,但配置权限应该根据手册严格。600 就可以了(`chmod 600 ~/.ssh/config`) (3认同)