Ubuntu 使用 git 能够 clone 但不能 push 的参考解决方法

写在前面

自己的测试环境:Ubuntu20.04
下面的操作都是和 git 有关,所以针对不同的操作系统(比如 Windows)也是一样的。

一、问题描述

在此之前使用git执行 git push origin master 的命令时,能够正常执行,但是一段时间之后,再次执行该命令,出现了如下问题:

ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

在这里插入图片描述

二、解决方法

出现这种情况后, 自己重新生成了ssh key,并且把id_rsa.pub中的内容复制到了 githubSSH keys中,但是依旧没能实现想要的效果。根据当前终端的报错信息ssh: connect to host github.com port 22: Connection timed out以及通过查阅其他资源,可能是当前的网络环境禁用了port 22,因此切换到https传输, 进行上传。
具体操作:

  1. 打开
  2. 修改
url = [email protected]:用户名/仓库名.git

修改为

url = https://用户名@github.com/用户名/仓库名.git

然后退出。

再次执行 push.

这次可能会提示输入密码,需要输入自己的 token 码,才能成功。
如果不知道自己的token 码,需要登录自己的github --> setting --> Developer Settings --> Personal access tokens 进行设置。具体可以参考链接[4]。

参考链接

[1] 凌烟阁主5221. git可以add,pull, 不可以push的问题解决 [EB/OL]. https://www.jianshu.com/p/25933a149307, 2019-06-21/2024-01-21.
[2] tom_wong666. 【问题探讨】浏览器可以访问github项目,但是git clone失败 [EB/OL]. https://blog.csdn.net/tom_wong666/article/details/128961438, 2023-02-09/2024-01-21.
[3] 生信编程日常. github 访问ping不通的解决办法 [EB/OL]. https://www.jianshu.com/p/2da7fa4d7fba, 2020-08-16/2024-01-21.
[4] github访问令牌token的创建方法 [EB/OL]. https://zhuanlan.zhihu.com/p/501872439, 2023-05-06/2024-01-21.