增加证书登录
要在 CentOS 中使用私钥进行 SSH 登录,您需要完成以下步骤:
-
生成 SSH 密钥对:使用 ssh-keygen 命令生成密钥对。生成方法有很多,putty、xhell、mobaxterm 都自带生成。 例如,输入以下命令并按照提示操作:
-
ssh-keygen -t rsa -b 4096
-
在目标服务器上将公钥添加到您的授权密钥列表中:将您生成的公钥内容添加到目标服务器上的 ~/.ssh/authorized_keys 文件中,就是将 id_rsa.pub 重命名为 authorized_keys。
-
配置 SSH 服务以使用证书进行身份验证。要做到这一点,需要首先修改 SSH 的配置文件 /etc/ssh/sshd_config,并启用
Public Key Authentication
,将参数设置为“yes”。 -
更新 SSH 服务配置后,重启 sshd 服务,以使更改生效。可以使用以下命令重启 sshd:
-
systemctl restart sshd
-
然后,在客户端电脑上,也就是用于登录目标服务器的电脑上,需要将证书文件保存在用户的 SSH 文件夹中(默认是 ~/.ssh)。
-
最后,使用类似以下的命令来连接目标服务器:
-
ssh -i /path/to/private_key user@server_ip
其中,/path/to/private_key 是证书文件的路径,user 是用户名,server_ip 是目标服务器的 IP 地址。
只允许证书登录
上面已经说过证书登录。那么如何禁用密码登录,只允许证书登录呢?
在 CentOS 中,可以通过修改 SSH 服务的配置文件 /etc/ssh/sshd_config
,来设置只允许证书登录。具体步骤如下:
-
使用 root 用户登录到 CentOS 服务器上。
-
打开 SSH 服务的配置文件
/etc/ssh/sshd_config
,并找到下面两行: -
#PubkeyAuthentication yes
-
#PasswordAuthentication yes
-
将
#PubkeyAuthentication yes
这一行的注释符#
去掉,并将yes
修改为only
,即: -
PubkeyAuthentication yes
这里的意思是只允许使用公钥(证书)进行身份认证,不再接受密码方式的登录。
-
将
#PasswordAuthentication yes
这一行的注释符#
去掉,并将yes
修改为no
,即: -
PasswordAuthentication no
这里的意思是禁止使用密码方式进行身份认证。
- 保存并关闭文件。
- 重启 SSH 服务,以使设置生效。可以使用以下命令重启 SSH 服务:
systemctl restart sshd
设置完成后,只有拥有相应私钥(证书)的用户才能够登录到 CentOS 服务器。如果没有相应私钥,则无法登录。