找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 325|回復: 0

SSH 公開金鑰認證

[複製鏈接]

257

主題

38

回帖

1138

積分

管理員

積分
1138
發表於 2025-1-2 20:25:27 | 顯示全部樓層 |閱讀模式

Linux Client

如果你的 client 電腦同樣也是 Linux(也就是以 Linux 的電腦登入 Linux 伺服器),那麼就可以依照以下的步驟來設定。

Step 1
如果要在 Linux 上產生 SSH 登入用的金鑰,可以使用 ssh-keygen 這個指令。在建立金鑰之前,要先建立 ~/.ssh 這個目錄,並設定正確的權限:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

然後以 ssh-keygen 產生金鑰:

ssh-keygen

在產生金鑰的過程中,會詢問一些問題,對於一般的使用者而言,全部都使用預設值(直接按下 Enter 鍵)即可。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/seal/.ssh/id_rsa):

首先指定金鑰儲存的位置,使用預設值即可,直接按下 Enter 鍵。

Enter passphrase (empty for no passphrase):

指定金鑰保護密碼,如果有設定密碼的話,以後每次使用都要輸入密碼,除你需要非常高的安全性,否則就不用設定了,直接按下 Enter 鍵即可。

Enter same passphrase again:

再次輸入密碼,直接按下 Enter 鍵,接著就會產生金鑰了。

Your identification has been saved in /home/seal/.ssh/id_rsa.
Your public key has been saved in /home/seal/.ssh/id_rsa.pub.
The key fingerprint is:
c7:61:98:72:02:91:94:db:12:96:05:9d:59:91:aa:25 seal@seal-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|   .=O.+oo       |
|    *.+ .o       |
|   . +o.+ o      |
|    E ++ o .     |
|     =  S o      |
|    .    .       |
|                 |
|                 |
|                 |
+-----------------+

這裡會顯示金鑰的指紋(fingerprint)與 randomart,而產生的金鑰會有兩個檔案:

  • id_rsa.pub:公開金鑰(public key),這是可以對外公開的金鑰,之後要將它放在遠端的 Linux 伺服器上作認證使用。
  • id_rsa:私密金鑰(private key),這是要保護好的金鑰,它等同於你的 Linux 密碼,放在自己的電腦中。

Step 2
將產生的 id_rsa.pub 這個公開金鑰複製到 Linux 伺服器上的 ~/.ssh/authorized_keys 檔案中:

ssh USER@HOST 'mkdir -p ~/.ssh;cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

如果不想要執行這麼長的指令,也可以用 ssh-copy-id 的方式:

ssh-copy-id USER@HOST

它預設會將 ~/.ssh/id_rsa.pub 這個公開金鑰複製到伺服器上,若要指定使用的金鑰,可以使用 -i 參數:

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST

將公開金鑰放在 Linux 伺服器上之後,就可以不用打密碼登入 Linux 了:

ssh USER@HOST

Linux Server

在 Linux 伺服器的部份,如果要提高安全性,可以在伺服器上的 /etc/ssh/sshd_config 中修改以下的設定,停用密碼認證的登入方式,只允許金鑰認證:

PasswordAuthentication no
PubkeyAuthentication yes

這樣可以避免網路上一些亂猜密碼的攻擊。不過使用這樣的方式要先留意自己的金鑰是否設定正確,確認可以不需要密碼登入之後才進行這樣的設定,否則停用密碼登入之後,如果沒有金鑰或是沒有將公開金鑰放在伺服器上,就會完全無法登入該 Linux 伺服器。最後記得重新啟動 sshd:

service sshd restart

參考資料:Ubuntu Help DigitalOcean

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|DoIT 科技論壇

GMT+8, 2025-6-15 20:01 , Processed in 0.022949 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表