SSH 金鑰建立與設定
大约 2 分鐘
SSH 金鑰設定
前言
本篇文章適用於 Windows 和 Linux 的金鑰建立設定教學。
每次登入 Linux 主機都要打密碼卻常常忘記,
或是因為GitHub 的安全性政策,
如果碰上以上的情境,那麼就要來用金鑰。
確認目前的電腦裡是否有金鑰檔案
cd ~/.ssh
ls
Linux:通常放在 /home/username/.ssh
Windows:通常放在 C:\Users\username.ssh
基本 SSH 金鑰設定
建立指令
ssh-keygen -t rsa -C yourEmail@example.com -f id_rsa
可選參數:
- –t 指定金鑰型別,預設是 RSA ,可以省略。
- -b:指定金鑰長度(bits),RSA 最小要求 768 位,預設是 2048 位;DSA 密鑰必須是 1024(FIPS 1862 標準規定)
- -f:指定金鑰檔案儲存檔名,省略會進行提問,預設檔名通常為 id_rsa。
- -P:提供舊密碼,省略會進行提問,
-P ''
表示不需要密碼 - -N:提供新密碼,省略會進行提問,
-N ''
表示不需要密碼 - -C:設定註釋文字,如 mail,這邊的 mail 需要是註冊 GitLab 的那個 mail。
- -R:主機名稱:從 known_hosts 刪除所有屬於 hostname 的密鑰
取得金鑰內容
使用 cat
指令,然後複製裡面的 SSH key
cat ~/.ssh/id_rsa.pub
測試金鑰連線
測試是否設定成功 & 設定 SSH agent
ssh -T git@github.com
多組 SSH 金鑰設定
金鑰觀念
每一組金鑰可以給多台客戶端電腦使用
但由於每一組金鑰只能對應一台伺服器主機
所以如果要連線多個 git 服務需要設定多組金鑰
建立多個不同檔名的金鑰
建立教學可參考上面 基本 SSH 金鑰設定
或可參考下方設定
ssh-keygen -t rsa -C yourEmailA@example.com -f id_rsa_gitlab
ssh-keygen -t rsa -C yourEmailB@example.com -f id_rsa_github
建立 SSH config 檔案
cd ~/.ssh
nano config
也可以使用 visual studio code 連入做新增
填寫 SSH config 檔案
可參考以下範例格式
# 命名連線名稱
Host gitlab-company # 定義連線的名稱
HostName gitlab.com # 要輸入連結的網站網址或IP位址
Port 222 # 指定埠口
User yourEmailA@example.com # 使用者名稱 mail 或 登入 ID
PreferredAuthentications publickey # 強制使用公鑰驗證
IdentityFile ~/.ssh/id_rsa_gitlab # SSH key的位置
Host github # 定義連線的名稱
HostName github.com # 要輸入連結的網站網址或IP位址
User yourEmailB@example.com # 使用者名稱 mail 或 登入 ID
PreferredAuthentications publickey # 強制使用公鑰驗證
IdentityFile ~/.ssh/id_rsa_github # SSH key的位置
設定 SSH config 權限
cd ~/.ssh
sudo chmod 600 config
測試金鑰連線
測試教學可參考上面
讀取 config 權限異常
如果測試 ssh 金鑰出現錯誤訊息
Bad owner or permissions on /home/users/.ssh/config
執行以下命令行:
cd ~/.ssh
sudo chmod 600 config