在使用Git進行版本控制時,我們常常需要和遠程倉庫(比如GitHub或GitLab)進行交互,比如克隆項目、推送代碼或者拉取更新。每次操作都要輸入賬號密碼顯然很麻煩,而SSH密鑰就是解決這個問題的“安全鑰匙”,讓我們無需重複輸入密碼就能和遠程倉庫建立信任連接。
一、爲什麼用SSH密鑰?¶
SSH密鑰本質是一對加密的“鑰匙”:
- 私鑰:存放在本地電腦,絕對保密,用來證明你的身份。
- 公鑰:需要提交到遠程倉庫(如GitHub),遠程倉庫通過公鑰驗證私鑰的合法性。
用SSH密鑰連接遠程倉庫的好處:
- 無需手動輸入密碼,操作更便捷。
- 比密碼驗證更安全,公鑰加密的方式降低了身份被盜的風險。
二、生成SSH密鑰對¶
首先,我們需要在本地電腦生成公私鑰對。
1. 打開終端/命令行工具¶
- Windows:使用Git Bash(安裝Git時會自帶)。
- macOS/Linux:直接打開“終端”。
2. 生成密鑰¶
在命令行中執行以下命令,生成一個名爲id_ed25519的SSH密鑰(當前推薦使用Ed25519算法,安全性高且生成快):
ssh-keygen -t ed25519 -C "你的郵箱@example.com"
- 命令解釋:
-t ed25519:指定密鑰類型爲Ed25519。-C "你的郵箱@example.com":添加註釋(通常填你的GitHub/GitLab註冊郵箱,方便區分不同賬號)。
執行後會提示你選擇密鑰保存路徑(直接回車使用默認路徑即可:/c/Users/你的用戶名/.ssh/id_ed25519),也可以輸入自定義路徑。
3. 設置密碼(可選)¶
系統可能會提示你輸入“Passphrase”(密碼短語),用於加密私鑰。如果是個人電腦且常用,建議留空(直接回車),否則每次使用Git操作時都需要輸入密碼。如果擔心安全,可以設置一個簡單的密碼。
4. 查看公鑰內容¶
生成成功後,公鑰文件是id_ed25519.pub,需要將其中的內容複製到遠程倉庫(GitHub/GitLab)。
- Windows/macOS/Linux:執行以下命令,直接打印公鑰內容:
cat ~/.ssh/id_ed25519.pub
或者用文本編輯器(如記事本、VS Code)打開C:\Users\你的用戶名\.ssh\id_ed25519.pub(Windows)或~/.ssh/id_ed25519.pub(macOS/Linux),複製全部內容。
三、將公鑰添加到SSH-Agent(讓私鑰自動生效)¶
爲了讓系統自動使用私鑰連接遠程倉庫,需要將私鑰添加到SSH-Agent(管理私鑰的進程)。
1. 啓動SSH-Agent¶
- macOS/Linux:
eval "$(ssh-agent -s)" # 啓動SSH-Agent
- Windows(Git Bash):通常會自動啓動,可直接執行下一步。
2. 添加私鑰到Agent¶
執行以下命令,將私鑰id_ed25519添加到Agent:
ssh-add ~/.ssh/id_ed25519
- 如果設置了Passphrase,這裏會提示你輸入密碼。
四、將公鑰添加到遠程平臺(GitHub/GitLab)¶
現在需要把公鑰複製到遠程倉庫,告訴它們“這把鑰匙我可以信任”。以下是GitHub和GitLab的具體步驟:
1. 以GitHub爲例¶
- 打開GitHub官網,登錄後點擊右上角頭像 → 選擇“Settings”。
- 在左側菜單找到“SSH and GPG keys” → 點擊“New SSH key”。
- Title:填寫一個標識(如“我的Windows電腦”或“MacBook Pro”,方便區分不同設備)。
- Key:粘貼剛纔複製的公鑰內容(
id_ed25519.pub裏的內容)。 - 點擊“Add SSH key”完成添加。
2. GitLab類似操作¶
- 打開GitLab官網,登錄後點擊右上角頭像 → “Settings” → “SSH Keys”。
- Title:填寫標識(如“工作電腦”)。
- Key:粘貼公鑰內容。
- 點擊“Add Key”完成添加。
五、測試連接是否成功¶
配置完成後,用以下命令測試SSH連接是否正常:
ssh -T git@github.com # GitHub
# 或
ssh -T git@gitlab.com # GitLab
- 如果成功:會返回類似“Hi 用戶名! You’ve successfully authenticated…”的歡迎信息。
- 如果失敗:檢查公鑰是否正確複製到遠程平臺,或是否輸入了正確的郵箱/賬號。
六、常見問題解決¶
- 提示“Permission denied”:可能是公鑰未添加到遠程平臺,重新檢查公鑰內容和平臺配置。
- 找不到.ssh目錄:生成密鑰時路徑錯誤,默認路徑通常是用戶目錄下的
.ssh文件夾,直接在文件管理器中輸入~/.ssh即可查看。 - 私鑰被拒絕訪問:檢查Agent是否已啓動並添加私鑰(執行
ssh-add -l可查看已添加的私鑰列表)。
現在,你已經完成了SSH密鑰的配置,以後克隆、推送代碼時就不用再輸入密碼了!如果遇到其他問題,隨時查看遠程平臺的官方文檔或Git命令行報錯信息,排查問題會更高效哦。