在使用命令行執行 Git 時,最常用的身份驗證方式是使用 SSH 金鑰。了解如何設置它們。

在使用命令行執行 Git 時,最常用的身份驗證方式是使用 SSH 金鑰。

大多數基於圖形界面的客戶端(如 GitHub Desktop)會幫你處理這個問題,但有時你需要使用命令行,所以設置好 SSH 金鑰非常有用。

此外,有時您需要一個 SSH 金鑰來執行一些有用的操作,例如在遠程服務器上拉取存儲庫。

您的電腦上的金鑰

SSH 金鑰存儲在 ~/.ssh 文件夾中。

您可以在其中擁有多個金鑰,因為 SSH 金鑰用於除了 Git 之外的其他事情。

您可以通過輸入以下命令列出所有 SSH 金鑰:

ls -al ~/.ssh

如果您有現有的金鑰,您會注意到它們是成對存在的,一個文件和另一個以 .pub 結尾的名稱相似的文件:

Existing SSH keys

.pub 文件包含公鑰,而另一個文件包含私鑰,私鑰絕不應在任何地方共享。

您絕不能共享私鑰。如果您丟失私鑰,您將不得不重新生成新的私鑰/公鑰對,因為沒有私鑰部分身份驗證將無法成功完成。

生成新金鑰

您可以使用命令 ssh-keygen 生成新的 SSH 金鑰,該命令在所有 macOS、Linux 和具有 Linux 子系統或Git for Windows 包的現代 Windows 電腦上都可用。

下面是您使用的命令:

ssh-keygen -t rsa -b 4096 -C "[[email protected]](/cdn-cgi/l/email-protection)"

最後一部分,在這個例子中填寫了一個電子郵件地址,這是一個註釋。您可以輸入任何您想要的電子郵件,它不必是您的 GitHub 帳戶,甚至可以是一個隨機字符串。如果存在歧義,了解是誰生成了金鑰可能是有用的。

密鑰生成程序會問您希望將密鑰保存在哪裡。如果這是第一個金鑰,建議使用 id_rsa 作為文件名,但最好選擇一個能讓您記住所生成的服務的名稱,比如 github_rsa

您還可以選擇添加密碼。我強烈推薦設置密碼。macOS 會在 Keychain 中存儲密碼,因此您不必每次都重複輸入密碼。

將密鑰添加到 GitHub

我展示了 GitHub 的過程,但每個 Git 平台都使用相同類型的過程,只是有一些細微的差異。

在 GitHub 的設置中,您會找到 “SSH and GPG keys” 菜單:

點擊它,可以查看您的當前設置:

如您所見,我在這裡定義了 3 個 SSH 金鑰,一個我在本地使用的 Mac 金鑰,另外兩個我在遠程服務器上用於拉取網站代碼。

點擊 “New SSH key” 可以添加一個新的金鑰:

您可以將標題設置為有意義的內容,以便您在 2 年後還能記得。

金鑰就是您之前生成的金鑰。

您可以打開金鑰的 .pub 文件,複製其內容並將其粘貼到這個框中。

您可以使用任何命令行界面命令,如 cat id_rsa.pub,並使用鼠標複製/粘貼整個金鑰代碼。

將該字符串保存到 GitHub(或任何其他服務,因為對於每個服務概念都是相同的),您的 Git 客戶端將獲得與遠程服務器通信所需的憑證,然後您就可以使用它了!

使用多個金鑰

建議為您打算使用的每個服務使用不同的 SSH 金鑰。

這使得非常容易使特定服務上的金鑰失效,而無需在您使用的所有服務上進行更改,如果您決定更新它,可能是因為被破解/公開暴露或其他原因。