Featured image of post CentOS 設定用私鑰證書登入伺服器

CentOS 設定用私鑰證書登入伺服器

增加證書登入 要在 CentOS 中使用私鑰進行 SSH 登入,您需要完成以下步驟: 生成 SSH 金鑰對:使…

增加證書登入

要在 CentOS 中使用私鑰進行 SSH 登入,您需要完成以下步驟:

  1. 生成 SSH 金鑰對:使用 ssh-keygen 命令生成金鑰對。生成方式有很多,Putty、Xshell、MobaXterm 都自帶生成工具。CentOS 設定用私鑰證書登入伺服器 例如,輸入以下命令並按照提示操作:

    1
    
    ssh-keygen -t rsa -b 4096
    
  2. 在目標伺服器上將公鑰添加到您的授權金鑰列表中:將您生成的公鑰內容添加到目標伺服器上的 ~/.ssh/authorized_keys 文件中,簡而言之,就是將 id_rsa.pub 重新命名為 authorized_keys。

  3. 配置 SSH 服務以使用證書進行身份驗證。要做到這一點,首先需要修改 SSH 的配置文件 /etc/ssh/sshd_config,啟用 Public Key Authentication,將參數設置為“yes”。

  4. 更新 SSH 服務配置後,重啟 sshd 服務,以使更改生效。可以使用以下命令重啟 sshd:

    1
    
    systemctl restart sshd
    
  5. 接下來,在客戶端電腦上,也就是用於登入目標伺服器的電腦上,需要將證書文件保存在用戶的 SSH 文件夾中(默認是 ~/.ssh)。

  6. 最後,使用類似以下的命令來連接目標伺服器:

    1
    
    ssh -i /path/to/private_key user@server_ip
    

    其中,/path/to/private_key 是證書文件的路徑,user 是用戶名,server_ip 是目標伺服器的 IP 位址。


只允許證書登入

上面已經提到證書登入。那麼如何禁用密碼登入,只允許證書登入呢?

在 CentOS 中,可以通過修改 SSH 服務的配置文件 /etc/ssh/sshd_config,來設定只允許證書登入。具體步驟如下:

  1. 使用 root 用戶登入到 CentOS 伺服器上。

  2. 打開 SSH 服務的配置文件 /etc/ssh/sshd_config,並找到以下兩行:

    1
    2
    
    #PubkeyAuthentication yes
    #PasswordAuthentication yes
    
  3. #PubkeyAuthentication yes 這一行的註解符 # 去掉,並將 yes 修改為 only,即:

    1
    
    PubkeyAuthentication only
    

    這裡的意思是只允許使用公鑰(證書)進行身份驗證,不再接受密碼方式的登入。

  4. #PasswordAuthentication yes 這一行的註解符 # 去掉,並將 yes 修改為 no,即:

    1
    
    PasswordAuthentication no
    

    這裡的意思是禁止使用密碼方式進行身份驗證。

  5. 保存並關閉文件。

  6. 重啟 SSH 服務,以使設定生效。可以使用以下命令重啟 SSH 服務:

    1
    
    systemctl restart sshd
    

設定完成後,只有擁有相應私鑰(證書)的用戶才能夠登入到 CentOS 伺服器。如果沒有相應私鑰,則無法登入。

Licensed under CC BY-NC-SA 4.0