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 Azure、Microsoft Docs、SSH COM