章節 ▾ 第二版

4.3 Git on the Server - 生成您的 SSH 公鑰

生成您的 SSH 公鑰

許多 Git 伺服器使用 SSH 公鑰進行身份驗證。為了提供公鑰,您系統中的每個使用者都必須生成一個,如果他們還沒有的話。此過程在所有作業系統上都類似。首先,您應該檢查以確保您還沒有金鑰。預設情況下,使用者的 SSH 金鑰儲存在使用者的 ~/.ssh 目錄中。您可以透過進入該目錄並列出內容來輕鬆檢查您是否已擁有金鑰。

$ cd ~/.ssh
$ ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

您正在尋找一對名為 id_dsaid_rsa 的檔案,以及一個帶有 .pub 副檔名的匹配檔案。.pub 檔案是您的公鑰,另一個檔案是相應的私鑰。如果您沒有這些檔案(甚至沒有 .ssh 目錄),您可以透過執行一個名為 ssh-keygen 的程式來建立它們,該程式隨 Linux/macOS 系統的 SSH 包提供,並隨 Git for Windows 一起提供。

$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local

首先,它會確認您要儲存金鑰的位置(.ssh/id_rsa),然後會兩次詢問密碼短語,如果您不想在使用金鑰時輸入密碼,可以將其留空。但是,如果您確實使用了密碼,請務必新增 -o 選項;它以一種比預設格式更 resistant to brute-force password cracking 的格式儲存私鑰。您也可以使用 ssh-agent 工具來避免每次都輸入密碼。

現在,每個執行此操作的使用者都必須將他們的公鑰傳送給您或任何管理 Git 伺服器的人(假設您使用的是需要公鑰的 SSH 伺服器設定)。他們只需複製 .pub 檔案的內容並透過電子郵件傳送即可。公鑰看起來像這樣:

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local

有關在多個作業系統上建立 SSH 金鑰的更深入教程,請參閱 GitHub 關於 SSH 金鑰的指南,網址為 https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent