Git SSH 方式無法 push 踩坑

引言

我們知道使用 git 管理的項目可以通過兩種格式的 url 來獲取,分別是 HTTPSSH

  • 使用 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 文件纔可使用。


參考


微信公衆號「何樂不爲呢」,一個碼農的技術筆記和嘮叨。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章