使用 SSH 指定 IdentityFile

使用 SSH 指定 IdentityFile

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

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

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

答案1

如果您能够成功使用密钥对身份验证ssh -i ~/.ssh/mykey user@host,则可以通过 SSH 客户端配置轻松地自动执行此操作。

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

Host hostname
  User username
  IdentityFile ~/.ssh/mykey
  IdentitiesOnly yes # see comment in answer below

然后,您可以简单地进行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 等具有多个帐户的网站时,这可能会出现问题。IdentitiesOnly yes如果您希望 ssh 仅使用您指定的密钥,则需要包含该密钥。

相关内容