引言
我們知道使用 git 管理的項目可以通過兩種格式的 url 來獲取,分別是 HTTP
和 SSH
-
使用 HTTP 方式操作 git 工程需要輸入對應的賬號和密碼,當然爲了方便也可以使用諸如 TortoiseGit 這樣的圖形化工具來管理 Git 工程,而且其中自帶記住賬號和密碼的功能,因此只需輸入一次賬號密碼即可。
-
使用 SSH 的方式拉取 Git 項目則需要提前配置好 SSH key ,也就是我們常說的公鑰和私鑰
遇到的問題
假如直接在本地安裝 Git 之後,使用 ssh-keygen
去生成公鑰和祕鑰,然後把用戶目錄下的 .ssh
目錄中 id_rsa.pub
文件中的內容配置到目標項目的部署祕鑰中,例如 Gogs
中:項目右上角的 倉庫設置
——> 管理部署密鑰
,然後添加上面生成的公鑰內容。
SSH url 的格式 :
git@xxx:xxx/xxx.git
發現可以 git clone
拉取工程 ,也可以通過 git pull
更新工程,但是沒辦法 git push
到遠端倉庫,提示如下:
Gogs: Key permission denied
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
正確配置
正確的方式是將公鑰內容添加到 賬戶設置
——> SSH
祕鑰中,這纔是真正配置 SSH 的地方,直接將其配置到項目中的話,就會出現只能 pull 不能 push 的問題。
TortoiseGit 配置
Settings
——> General
——> Re-run First Start Wizard
(中文版:鼠標右鍵
——> 常規設置
——> 重新運行首次啓動向導
)然後一直 next 直到 Authentication and credential store
頁面,這裏有兩種方式 :TortoiseGitPlink
(默認)和 OpenSSH
,區別其實就是依賴的客戶端不同,使用時也有所區別:
-
選擇
OpenSSH
的方式只要使用了ssh-keygen
生成了公鑰和私鑰即可用; -
選擇
TortoiseGitPlink
則需要使用PuTTYgen.exe
工具生成.ppk
文件,然後再使用 Git 自帶的工具Pageant.exe
(開始\所有程序\TortoiseGit
)去添加之前創建的.ppk
文件纔可使用。
參考
微信公衆號「何樂不爲呢」,一個碼農的技術筆記和嘮叨。