您如何设置 ssh 以使用密钥而不是用户名/密码进行身份验证?

ScA*_*er2 37 linux ssh

您如何设置 ssh 以使用密钥而不是用户名/密码对用户进行身份验证?

Chr*_*ung 29

对于每个用户:他们应该(在他们的本地机器上)生成他们的密钥对ssh-keygen -t rsarsa可以用dsa或替换rsa1,尽管不推荐这些选项)。然后他们需要将他们的公钥 ( id_rsa.pub)的内容放入~/.ssh/authorized_keys正在登录的服务器上。

  • 肯定会以这种方式生成密钥,然后检查@Chris Bunch 关于“ssh-copy-id”的帖子。这就是转移您的“id_rsa.pub”的方式。 (3认同)
  • 不要忘记 chmod 0700 .ssh chmod 0600 .ssh/authorized_keys (2认同)

Chr*_*nch 24

我实际上更喜欢ssh-copy-id,默认情况下在 *nix 上找到的脚本(也可以很容易地放在Mac OS X 上),它会自动为您执行此操作。从手册页:

ssh-copy-id 是一个使用 ssh 登录远程机器的脚本(大概是使用登录密码,所以应该启用密码认证,除非你巧妙地使用了多个身份)

它还更改远程用户的主目录、~/.ssh 和 ~/.ssh/authorized_keys 的权限以删除组可写性(否则,如果远程 sshd 在其配置中设置了 StrictModes,则会阻止您登录)。

如果给出 -i 选项,则使用身份文件(默认为 ~/.ssh/identity.pub),无论 ssh-agent 中是否有任何密钥。

  • @Chris Bunch 每个人都看过来!:) ssh-copy-id 绝对是分享一个人的 id_rsa.pub 的方式 (2认同)

Nod*_*ode 6

哼,没听懂。只需创建一个密钥即可开始使用。:) HOWTO 另外,您可以禁止通过密码登录。例如在 /etc/ssh/sshd_config 中:

PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

  • 并且您还需要设置 UsePAM no(或相应地配置 PAM)。令人惊讶的是,有多少 HOWTO 错过了这一部分。如果不这样做,您仍然可以使用密码登录。 (2认同)