ssh 公钥认证

Jvr*_*vrq 2 linux ssh ssh-keys

我尝试将 ssh 配置为使用公钥身份验证

链接

/etc/ssh/sshd_config 有这个参数。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)

但我仍然被提示输入密码。如果我使用

PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

我无法登录

有什么建议吗?


它有效,但仅适用于 root 用户。

我的问题是,我有这个参数

PermitRootLogin 号

如果我使用,我可以使用 root 用户的密钥登录

PermitRootLogin 是的。

系统中只有一个/root/.ssh目录,这个目录下有一个authorized_keys文件

如果在这个系统中没有每个用户的 home/$USER/.ssh 目录和authorized_keys 文件,我如何将它添加到其他用户?

有没有办法为每个用户配置?我需要为每个用户使用不同的 authorized_keys 文件。

是否可以为不同的主机、域或 ip 进行配置?类似于 httpd.conf

mgo*_*ven 5

密钥身份验证总是在密码身份验证之前尝试,因此如果系统提示您输入密码,则密钥身份验证失败。最常见的原因是客户端和服务器端文件的所有权或权限不正确。

在客户端和服务器上,该~/.ssh目录必须归您所有并且只有您可以访问:

chown -R $USER ~/.ssh
chmod u=rwX,g=,o= ~/.ssh
Run Code Online (Sandbox Code Playgroud)

在客户端上,私钥必须为您所有且仅供您访问:

chmod u=rwX,g=,o= ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

在服务器上,授权密钥文件必须为您所有且仅供您访问:

chmod u=rwX,g=,o= ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

  • [`ssh-copy-id`](http://linux.die.net/man/1/ssh-copy-id) 是一个很好的帮手。 (2认同)