Git 客戶端與服務器端的通信支持多種協議,ssh 最常用。ssh的公鑰登錄流程:用戶將自己的公鑰存儲在遠程主機,登錄時,遠程主機會向用戶發送一條消息,用戶用自己的私鑰加密后,再發給服務器。遠程主機用事先存儲的公鑰進行解密,如果成功,就證明用戶可信。
生成公私密鑰
用戶必須事先提供自己的公鑰給服務器,如果沒有,可以用 ssh-keygen
命令生成。該命令會生成兩個文件(公鑰 and 私鑰),默認路徑在用戶根目錄下的.ssh
文件夾中。
注意: 默認生成的文件名是 id_rsa/id_rsa.pub
,由於這里需要兩套密鑰,所以需為它們分別命名,以防止互相覆蓋。
執行下面命令生成密鑰:
ssh-keygen -t rsa -C "注冊 gitlab 賬戶的郵箱"
提示要輸入名稱時輸入 id_rsa_gitlab
ssh-keygen -t rsa -C "注冊 github 賬戶的郵箱"
提示要輸入名稱時輸入 id_rsa_github
提供公鑰給服務器
- 復制
~/.ssh/id_rsa_gitlab.pub
文件內容,進入gitlab / profile / SSH Keys,將公鑰內容添加至 gitlab 。 - 復制
~/.ssh/id_rsa_github.pub
文件內容,進入github / setting / SSH and GPG keys / New SSH key 將公鑰內容添加至 github 。
更新SSH配置
SSH 配置信息加載順序如下:
- 命令行配置參數
- 用戶級別的配置文件
~/.ssh/config
- 系統級別的配置文件
/etc/ssh/ssh_config
根據我們實際情況,更新用戶級別配置信息即可,打開 SSH 客戶端配置文件 ~/.ssh/config
增加配置項,如果沒有就創建一個(是文本文件)。
SSH配置項有很多,詳見:https://man.openbsd.org/ssh_config 或r https://www.ssh.com/ssh/config/
在配置文件中加入以下內容
Host github.com
HostName github.com
User githubuser@xyz.com
IdentityFile ~/.ssh/id_rsa_github
Host gitlab.com
HostName gitlab.com
User gitlabuser@xyz.com
IdentityFile ~/.ssh/id_rsa_gitlab
配置倉庫用戶信息
Git 配置信息也有三個地方可以存儲,根據加載順序依次為:
/etc/gitconfig
文件: 包含系統上每一個用戶及他們倉庫的通用配置。 如果使用帶有 --system 選項的 git config 時,它會從此文件讀寫配置變量。~/.gitconfig
或~/.config/git/config
文件只針對當前用戶。 可以傳遞 --global 選項讓 Git 讀寫此文件。- 當前使用倉庫的 Git 目錄中的 config 文件(就是
.git/config
)
不同倉庫鏈接不同的服務器,所用的git用戶信息也不同。可以把常用的git用戶信息配置到 ~/.gitconfig
中,不常用的我們在倉庫中單獨配置。以常用 gitlab 為例:
git config --global user.name "githubuser"
git config --global user.email "githubuser@xyz.com"
進入本地 github 倉庫配置 git 用戶信息
~/github$ git config --local user.name "githubuser"
~/github$ git config --local user.email "githubuser@xyz.com"
寫在后面
本文地址:https://www.cnblogs.com/kelsen/p/8342239.html
如果您有任何建議或疑問請在下面留言交流。