增加證書登入
要在 CentOS 中使用私鑰進行 SSH 登入,您需要完成以下步驟:
-
生成 SSH 金鑰對:使用 ssh-keygen 命令生成金鑰對。生成方式有很多,Putty、Xshell、MobaXterm 都自帶生成工具。 例如,輸入以下命令並按照提示操作:
1
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:
1
systemctl restart sshd
-
接下來,在客戶端電腦上,也就是用於登入目標伺服器的電腦上,需要將證書文件保存在用戶的 SSH 文件夾中(默認是 ~/.ssh)。
-
最後,使用類似以下的命令來連接目標伺服器:
1
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
,並找到以下兩行:1 2
#PubkeyAuthentication yes #PasswordAuthentication yes
-
將
#PubkeyAuthentication yes
這一行的註解符#
去掉,並將yes
修改為only
,即:1
PubkeyAuthentication only
這裡的意思是只允許使用公鑰(證書)進行身份驗證,不再接受密碼方式的登入。
-
將
#PasswordAuthentication yes
這一行的註解符#
去掉,並將yes
修改為no
,即:1
PasswordAuthentication no
這裡的意思是禁止使用密碼方式進行身份驗證。
-
保存並關閉文件。
-
重啟 SSH 服務,以使設定生效。可以使用以下命令重啟 SSH 服務:
1
systemctl restart sshd
設定完成後,只有擁有相應私鑰(證書)的用戶才能夠登入到 CentOS 伺服器。如果沒有相應私鑰,則無法登入。