Git SSH 方式无法 push 踩坑
Posted 河乐不为
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git SSH 方式无法 push 踩坑相关的知识,希望对你有一定的参考价值。
引言
我们知道使用 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
文件才可使用。
参考
微信公众号「何乐不为呢」,一个码农的技术笔记和唠叨。
以上是关于Git SSH 方式无法 push 踩坑的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2019 git 问题:“无法生成 ... ssh.exe:没有这样的文件或目录”在 fetch/push 上
git push 在 bash 中使用 ssh-agent 但不是 gui