跳至主要內容

SSH 金鑰建立與設定

Pamis Wang大约 2 分鐘SSHSSHUbuntuLinuxWindows

SSH 金鑰設定

前言

本篇文章適用於 Windows 和 Linux 的金鑰建立設定教學。

每次登入 Linux 主機都要打密碼卻常常忘記,
或是因為GitHub 的安全性政策open in new window
如果碰上以上的情境,那麼就要來用金鑰。

確認目前的電腦裡是否有金鑰檔案

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
上次編輯於:
貢獻者: EXMAIL\pamis,Pamis Wang,pamis