如何为 SSH 永久添加身份?

the*_*cer 42 ssh

ssh-add <key>每次需要通过 ssh 连接到网络服务器时,我都需要运行。有没有办法永久添加 ID,这样我就不必在每次登录时不断添加身份?

编辑:关键是我从云服务下载的 pem 文件。

Mar*_*ppi 42

像平常一样生成您的密钥:ssh-keygen,然后使用 将该密钥放置到远程服务器ssh-copy-id,这会将其同步到远程服务器接受的密钥。

ssh-keygen
ssh-copy-id user@host
Run Code Online (Sandbox Code Playgroud)

它将提示您输入密码,然后执行将您的.pub密钥与远程 SSH 服务器链接所需的所有步骤。

默认情况下,它会将您所有的 .pub 密钥复制到远程服务器。如果您刚刚创建了您的密钥,ssh-keygen那么这不是问题(因为您只有一个!)。但是,如果您有多个键,则可以仅复制带有-i标志的特定键。

ssh-copy-id -i ~.ssh/key_name.pub user@host
Run Code Online (Sandbox Code Playgroud)

替换key_name.pub为键名。

  • 对于像我这样的人(或提问者),他唯一接触 ssh 的人是使用它访问云托管服务器,其中 Web 服务创建密钥并将其提供给我(在我的情况下,AWS 服务器),这个答案很难无需做一些重要的背景研究即可理解。例如,我从未使用过 `ssh-keygen` 或 `ssh-copy-id`。另一方面,鉴于我的知识水平,像 [this one](http://stackoverflow.com/a/4246809/1709587) 这样的答案对我来说非常清晰和有用。取决于你是否想以任何方式调整你的答案来帮助像我这样无知的人。:) (4认同)

小智 13

把这个放在你的 ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 
Run Code Online (Sandbox Code Playgroud)

  • 这是实际回答问题的唯一答案。其他人只是将默认公钥添加到单个目标服务器,如果您为不同的服务器集有两个以上的单独服务器,这很烦人。 (4认同)
  • 此解决方案会在每次打开终端时添加 ssh 身份,此解决方案有效,可能不是正确的方法,但您可以解决问题,感谢您的解决方案。 (3认同)
  • 每次运行 .bashrc 时(即每次打开终端时),此解决方案都会提示输入密钥密码,这“非常”烦人且具有破坏性。我有办法避免这种情况吗? (2认同)

小智 7

您可以使用以下命令生成 ssh 密钥:

ssh-keygen
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下命令将您的密钥复制到服务器:

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 
Run Code Online (Sandbox Code Playgroud)

现在您可以自动登录您的网络服务器