在 CentOS6 上配置公钥/私钥 - 仍然让我在没有私钥的情况下进行连接

在 CentOS6 上配置公钥/私钥 - 仍然让我在没有私钥的情况下进行连接

我有一个 CentOS 6 的 VPS。我注意到有很多通过 SSH 的登录尝试,所以我想通过基于密钥的身份验证来锁定它。这是我到目前为止所做的......

在我的客户端计算机 (OSX) 上运行以下命令

ssh-keygen -t rsa

使用默认设置(无密码、默认名称等)执行此操作

在我的客户端上设置以下权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

使用以下命令将我的公钥复制到我的 VPS 上的用户文件夹的根目录(假名称/IP)

scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub

在这里,我注意到我的 .ssh 中没有authorized_keys 文件。所以我用触摸来创建它。然后我使用CAT将.pub的内容复制到authorized_keys文件中

cat id_rsa.pub >> ~/.ssh/authorized_keys

并在 .ssh 和authorized_keys 上设置适当的权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

在 /etc/ssh/sshd_config 中,我取消注释了以下内容

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

然后我重新启动了sshd

service sshd restart

据我所知,这就是启用公钥身份验证所需要做的全部事情。但是,当我尝试在不提供 -i 私钥的情况下进行 SSH 时,所有设备都允许我进入。

答案1

如果客户端密钥位于默认位置,~/.ssh/id_$alg则会自动使用它,除非您使用-o IdentitiesOnly=yes(或等效的配置文件条目)禁用它。如果您能够从没有私钥副本的客户端进行连接如果不指定密码,则说明您的服务器上的身份验证设置不正确。如果你想使用仅有的私钥->公钥认证,配置PasswordAuthentication no

PS:(anything >>file并且anything >file)如果文件不存在,则创建该文件,您不需要touch它。默认的远程目录scp是您的主目录,因此您通常不需要指定它。

还:

RSAAuthentication适用于 SSHv1,它在几十年前就被破坏了,永远不应该使用,并且在所有 OpenSSH 版本中默认禁用很长一段时间,并且从 7.4 开始从服务器端完全删除,尽管我预计 CentOS 6 可能没有最新的版本。

PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys(加上authorized_keys2这是一个遗留物,不再使用)是默认值,所以你实际上不需要取消注释它们。

答案2

如果您只想允许公钥/私钥,则需要在服务器上显式禁用密码身份验证。在您的/etc/ssh/sshd_config更改或添加设置中:

PasswordAuthentication no

我还喜欢显式禁用我不使用的所有其他类型的身份验证,例如 Kerberos 和 GSSAPI。

相关内容