事情是酱紫的,本楼主刚刚在 Rstudio 耕了一篇博客,然而没法推送到 github 仓库上,push 那一步会报错,错误如下。

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.

俺试了下把 wifi 切换成手机热点,不行。试了下挂梯子,可以正常上 github,但是也还是 push 失败。上网搜一通,按照这里的一个答案,把url=git@...:...改成yrl=https://.../...,也还是不行。当然,也试了重启电脑,也是不行滴。

不知有没有哪位小伙伴能想到别的撒招破解这个问题?

后来这个问题是这样解决的。

  1. 执行ssh -T git@github.com,得到下面的结果,这可能是22这个端口不能用了。

    ssh: connect to host github.com port 22: Connection timed out
  2. 执行ssh -T -p 443 git@ssh.github.com,回答完 yes 后会得到下面的内容,说明443这个端口可用。

    Hi earfanfan! You've successfully authenticated, but GitHub does not provide shell access.
  3. 执行vim ~/.ssh/config,在打开的文件里面贴入下面的内容,然后摁 ESC 键,输入:wq保存,如果再执行ssh -T git@github.com,又可以看到 github 回复 Hi 那段,那就可以正常推送了。

    Host github.com
      Hostname ssh.github.com
      Port 443

    yuanfan 我以前也遇过timed out的问题,但好像都是网络不行,换一下网络,或者过两天就能恢复。我复制了你的问题表述,上ChatGPT(3.5)问了一下,它提供的答案如下:

    看起来你遇到的问题可能涉及到网络连接或者SSH密钥的配置。以下是一些建议,你可以逐步尝试解决问题:

    1. 检查网络连接:

      • 确保你的网络连接是正常的,可以尝试使用浏览器或其他网络应用程序验证你是否能够访问互联网。
      • 如果使用代理或梯子,请确保代理设置正确。在使用梯子时,可能需要配置Git使用代理,请检查你的Git配置。
    2. 检查SSH密钥配置:

      • 确保你的SSH密钥已经添加到GitHub账户。你可以在GitHub设置中的SSH and GPG keys页面中添加你的SSH密钥。
      • 使用ssh -T git@github.com命令来测试SSH密钥是否正确配置。你应该能够收到一条欢迎消息。
    3. 更改远程仓库地址为HTTPS:

      • 如果你在尝试使用HTTPS时依然失败,可以在RStudio或命令行中将远程仓库地址更改为HTTPS。
      • 在RStudio的Git面板中或者命令行中执行如下命令:
             git remote set-url origin https://github.com/username/repo.git
        替换 usernamerepo 为你的GitHub用户名和仓库名。
    4. 尝试使用SSH代理:

      • 如果你在使用梯子的情况下依然无法成功推送,可能是因为SSH连接也受到了梯子的影响。你可以尝试使用SSH代理,将Git的SSH连接通过梯子进行。
    5. 检查防火墙设置:

      • 确保你的防火墙没有阻止Git通过SSH连接到GitHub。有时候防火墙设置可能会影响SSH连接。
    6. 使用不同的端口:

      • GitHub的SSH默认端口是22,但有时候网络环境可能会阻塞该端口。你可以尝试使用HTTPS协议或者使用Git的SSH配置文件将端口更改为其他非阻塞的端口。
    7. 检查GitHub状态:

      • 有时候GitHub可能会出现暂时的故障,你可以在GitHub的状态页面上查看是否有相关的问题:GitHub 状态

    完成这些步骤后,你应该能够解决推送问题。如果问题依然存在,请提供更多详细的信息,以便能够更好地帮助你。

      vickkk
      我那梯子没有全局模式,跟模式二字有关的只有 Pac 模式。

      residual-sun

      或者过两天就能恢复

      话说我也把这个问题拿去问了一起众筹买流量架梯子的同事,同事也是说过两天再试试,我没明白为撒要过两天,还以为大家都默默认为时间是包治百病的庸医?后来同事说,出了问题也要有人维护,不然放一百年也不会恢复……我才反应过来原来过两天的意思是指等别人修好。

        题外话,建议 GitHub 和 GitLab 建立双向同步,平时只需要把文件推送到 GitLab 上即可,国内访问 GitLab 很丝滑。至于 Gitee,一来颜值不符合我的审美,二来功能方面貌似 没有 GitLab CI/CD 和 GitLab Runner 等功能。

          chuxinyuan

          还可以这样啊,我回头看看好不好搞,好搞的话就鼓捣一下,不好搞的话,真到了那一天就自然地消失在互联网世界就好了。另,我忽然想起来我的个人博客已经托付给人类朋友了,好像是不会消失的。

          yuanfan 我看见你最新的一篇博客发出来啦,不知道上传现在是否恢复正常了(如果是的话,看起来好像是属于“过两天就能恢复”的那种问题类型,还是通过其他方法修复了)?

            residual-sun
            我把解决方法更新在一楼了,就是原来的22端口不好使,换成别的。

            2 个月 后
            CyrusYip 更改标题为「无法使用 SSH 通过 22 端口推送代码至 GitHub