SSH Key設定不求人-一台電腦多平台多個使用者,一次搞定!

SSH Key設定不求人-一台電腦多平台多個使用者,一次搞定!

更新於 發佈於 閱讀時間約 5 分鐘

第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。

不管你的公司使用 GitHub 或 GitLab 作為代碼 Repo 的託管平台,以下內容都適用。

讓我們開始吧~

Step 1 生成 SSH key

首先,在終端機中使用以下命令生成 SSH key:

ssh-keygen -t rsa -b 4096 -C "[email protected]" -f ~/.ssh/gitlab_userName_rsa

藉由 -f 參數,我們可以直接指定 SSH 金鑰的路徑。我們可以通過不同的檔名區分不同的金鑰,方便識別。如果不使用 -f 參數,則會跳出提示,要求輸入 SSH 金鑰的檔案名稱。預設情況下,SSH 相關資料會被儲存在 ~/.ssh 目錄中。

此步驟會在您指定的位置中生成兩個檔案,一個是公鑰,一個是私鑰。稍後我們需要將公鑰添加到 GitHub 或 GitLab 中。

Step2 設定SSH代理配置文件

藉由config這個檔案,為每個主機指定不同的ssh金鑰。

在~/.ssh新增config檔案

使用以下命令進入 .ssh 目錄:

cd ~/.ssh

創建一個名為 config 的新檔案,然後打開它:

touch config
open config

在 config 檔案中,您可以為每個主機指定不同的 SSH 金鑰。

# GitHub account 1

Host github.com-account1
HostName github.com
User git
IdentityFile ~/.ssh/github_account1_rsa

# GitHub account 2

Host github.com-account2
HostName github.com
User git
IdentityFile ~/.ssh/github_account2_rsa# Gitlab account 2

Host gitlab.com-account1
HostName gitlab.com
User git
IdentityFile ~/.ssh/gitlab_account1_rsa

最後,幫這隻檔案設定權限

chmod 600 ~/.ssh/config

Step3 將 SSH 金鑰添加到 ssh-agent 中

把剛剛新增的ssh key加進來

ssh-add ~/.ssh/gitlab_userName_rsa

ssh-agent 就會自動使用你的 SSH 金鑰進行身份驗證

你可以使用 ssh-add -l 命令來列出 ssh-agent 中已經添加的 SSH 金鑰。如果一切正常,你會看到你剛剛添加的 SSH 金鑰的指紋。

Step4 添加公鑰到遠程存儲庫

登錄到您的 GitHub 或 GitLab 帳戶,將您的 SSH 公鑰添加到帳戶的 SSH 金鑰列表中。

輸入以下指令讀取公鑰

cat ~/.ssh/step1創建的檔案名稱.pub
raw-image
raw-image

final step: 接下來我們就可以利用git clone把專案複製下來啦!

git clone git@gitlab.com-userabc:g5391/myCompany/my-repo.git

語法為

git clone <你在官網點git clone複製的那段>

不過要將預設的host改為剛剛你在config file寫好的host,它就會知道hostName是誰,要看哪份鑰匙。

Ps第一次連線到新主機時會跳出
The authenticity of host ‘gitlab.com (172.65.251.78)’ can’t be established.
ECDSA key fingerprint is SHA256:xxxx
這時請檢查他打印出來的fingerprint是對的,沒問題輸入yes就可,這步驟結束後他會將這個金鑰指紋添加到你的 known_hosts 檔案中(也是在~/.ssh中),以便將來進行自動驗證。

總結

設定 SSH 金鑰可以幫助你更加安全、更加高效地使用 Git,特別是在需要同時使用多個 GitHub 或 GitLab 帳戶時。總體而言,我們利用不同檔名以及config檔來做到一台電腦多個平台多個帳號的SSH key管理,一旦設置成功,就可以使你的工作更加順暢。

avatar-img
JHIHLEI LIN的沙龍
4會員
10內容數
分享感情與生活的故事,期望我們都能在愛與被愛的路上感到幸福,並且在這個只有活一次的人生裡好好的活成自己喜歡的樣子
留言
avatar-img
留言分享你的想法!
JHIHLEI LIN的沙龍 的其他內容
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
我對於自己開發的API會習慣性寫一份swagger文件方便前端串接,但因為這些文件都是存在我個人的swagger帳號,且會受限於免費版限制,再加上剛好跟PM在討論如何維護我們的文件,於是我就開始著手將swagger自己部署到公司管理後台。 這樣做的好處: (1)後端都可以編輯 (2)文件隸屬於
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
我對於自己開發的API會習慣性寫一份swagger文件方便前端串接,但因為這些文件都是存在我個人的swagger帳號,且會受限於免費版限制,再加上剛好跟PM在討論如何維護我們的文件,於是我就開始著手將swagger自己部署到公司管理後台。 這樣做的好處: (1)後端都可以編輯 (2)文件隸屬於