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 "your-email@google.com" -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
4會員
10內容數
分享感情與生活的故事,期望我們都能在愛與被愛的路上感到幸福,並且在這個只有活一次的人生裡好好的活成自己喜歡的樣子
留言0
查看全部
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)文件隸屬於
你可能也想看
Google News 追蹤
安裝官方 nginx 先在/etc/yum.repos.d新增一個nginx.repo的檔案 並加入以下內容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgc
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
在處理Linux時,遇到了Kubuntu 22.04的SSH連線問題。本文將介紹如何完整移除之前裝過的SSH並重新安裝以解決問題。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。
安裝官方 nginx 先在/etc/yum.repos.d新增一個nginx.repo的檔案 並加入以下內容 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgc
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
在處理Linux時,遇到了Kubuntu 22.04的SSH連線問題。本文將介紹如何完整移除之前裝過的SSH並重新安裝以解決問題。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
本教程將引導您在 Ubuntu 系統上啟用 SSH、配置防火牆規則以允許入站連接,並更改預設 SSH 連接埠以增強安全性。包括更新系統、安裝OpenSSH伺服器、更改連接埠、設定防火牆、檢查規則和重新啟動服務等步驟。