SSH Key是什麼?4步驟實現 SSH 連線免密碼!




SSH Key 是什麼?1分鐘認識SSH金鑰與連線原理!

這裡介紹使用 SSH key(也稱為 SSH 金鑰) 既安全又方便。尤其在使用 Linux 的 crontab 寫差異備份 rsync 或是傳輸檔案 scp …. 都會需要再次輸入密碼,但有沒有想過會被側錄軟體監聽或是密碼遭受外洩呢?當然也需要搭配限定來源的落實,才有辦法有效避免悲劇的發生,工欲善其事,必先利其器!

SSH 連線免密碼的好處

SSH 是一種加密的連接通訊協定,雖然 SSH 提供加密連線,但搭配使用密碼與 SSH 連線仍會讓 VM 容易遭受暴力密碼破解攻擊,建議 SSH 連線至 VM 時都透過SSH key

SSH Key 的公鑰及私鑰

  • 公開金鑰」( public key) 放置在您的 Linux VM 上。
  • 私密金鑰」( private key) 保留在您的本機系統上。請務必保護好此檔案。

SSH Key 連線 Linux VM 的原理

以本篇例,金鑰以建立後會在 ~/.ssh 的資料夾中產生一個 ~/.ssh/id_rsa.pub 檔案。同時也會產生 ~/.ssh/authorized_keys 這個檔案,用於在連線驗證符合 SSH 連線上的對應私密金鑰。更多詳細或是停用密碼都可以在 /etc/ssh/sshd_config 設定。

SSH Key 連線免密碼,4個步驟輕鬆實現!

Step 1: 檢查 .ssh 目錄是否存在

Linux 本機端
檢查是否有 ~/.ssh 這個目錄,沒有的話請建立,並設定正確的權限,再切換到資料夾中:

#建立.ssh資料夾
mkdir -p ~/.ssh

#調整權限 (700只有創立者能編輯進入)
chmod 700 ~/.ssh

#切換到建立之目錄
cd ~/.ssh

Step 2: 使用 ssh-keygen 產生 ssh 金鑰

ssh-keygen 常用參數介紹 :

ssh-keygen 參數選項描述
-t (type)要建立的金鑰類型 預設RSA [rsa|dsa]
-b (bits)預設長度為 3072 位 (RSA) 或 256 位 (ECDSA)
-C (comment)新增註解,附加在結尾的時候。通常會以電子郵件地址作為註解,
-f (filename)私密金鑰檔案的檔案名稱 預設私鑰id_rsa,公鑰id_rsa.pub
-N (new_passphrase)新增密碼

本例中,不產生複雜密碼,所以此步驟只輸入 ssh-keygen 其它過程中全部都使用預設值(直接按下 Enter 鍵)即可。

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

全部都直接按下 Enter 鍵即可 ,直到看到以下輸出文字,表示已經建立好金鑰

Your identification has been saved in /home/xxxxxx/.ssh/id_rsa.
Your public key has been saved in /home/xxxxxx/.ssh/id_rsa.pub.
...
  • id_rsa.pub:公開金鑰(public key) 請將此檔放置在您的 Linux VM 上。
  • id_rsa:私密金鑰(private key) 保留在您的本機系統上,請務必保護好此檔案不移動。

Step 3: 透過 ssh-copy-id 複製 ssh 金鑰到 Linux VM

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

ssh-copy-id -i ~/.ssh/id_rsa.pub {USER}@{SERVER}

Step 4: 確認能使用 ssh key 連線登入 Linux VM

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

ssh {USER}@{SERVER}

使用 SSH Key 的注意事項

恭喜你!現在更加方便的管理您的VM,但是請記得要注意以下事情,可以大幅降低資安風險的發生

  • 將私密金鑰(private key)保護好,尤其多人維護的伺服器,需定期檢查權限是否有問題
  • 防火牆設定,需要限定來源

未來,會再新增有關防火牆相關的設定與介紹,來講解限定來源的設定方法,並在本篇中做呼應

參考資料: Microsoft AzureMicrosoft DocsSSH COM





主頁 » LINUX » 實用技巧 » SSH Key是什麼?4步驟實現 SSH 連線免密碼!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *