Git SSH 方式无法 push 踩坑

Posted 河乐不为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 文件才可使用。


参考


微信公众号「何乐不为呢」,一个码农的技术笔记和唠叨。

 

以上是关于Git SSH 方式无法 push 踩坑的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2019 git 问题:“无法生成 ... ssh.exe:没有这样的文件或目录”在 fetch/push 上

Mac git push偶现无法提交代码。

SSH方式连接Git

git push 在 bash 中使用 ssh-agent 但不是 gui

windows系统git使用ssh方式和gitee/github进行同步

git push上传代码到gitlab上,报错401或403