解决 git 命令行访问 GitHub 失败的问题

当使用git clone GitHub仓库时遇到SSL连接错误或超时问题,可以通过配置git代理来解决。如果本地SOCKS代理端口为1080,则执行`git config --global http.proxy socks5://127.0.0.1:1080`和`git config --global https.proxy socks5://127.0.0.1:1080`。若要取消代理,运行`git config --global --unset http.proxy`和`git config --global --unset https.proxy`。注意,端口可能不一定是1080,需检查网络设置确认。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

最近在用 git 命令行工具 clone GitHub 上的 repo 时,经常会遇到这样的问题:

# Mac 上
fatal: unable to access 'https://github.com/**/**/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

# Windows 上
fatal: unable to access 'https://github.com/**/**/': Failed to connect to github.com port 443: Timed out

解决办法

git 使用代理

遇到这种情况,需要为 git 命令行工具配置代理。假设你的 socks 代理本地端口为 1080,那么需要在命令行执行下面的命令:

git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

这样再进行 clone、pull 之类的 git 操作,就不会报错了,问题解决!

注意,虽然 socks 端口一般为 1080,但还真不一定就是 1080。我最近用的一台 Mac 上,不知道为啥 socks 端口居然自动配到了 1086。我一开始按 1080 配的,所以一直没通,过了半天才发现问题。

那么如何判断当前的 socks 服务端口号是多少呢?Mac 和 Windows 下方法大同小异,简单来说就是在“设置”->“网络” ->“高级”->“代理” 菜单下,会有一些当前使用代理的信息,找找看就是了,在此就不赘述。

取消代理

但如果一直走代理也会有问题,比如我连接公司内网的 GitLab 就失败了。这时候就需要取消 git 的代理:

git config --global --unset http.proxy
git config --global --unset https.proxy

目前没找到更好的解决办法,只能是根据需要手动设置和取消代理。

备注

一开始我在网上搜到的解决方法是这样的:

git config --global http.proxy http://127.0.0.1:1086
git config --global https.proxy http://127.0.0.1:1086

主要的区别在于使用 http:// 而不是socks5。我记得这种方法之前在 Windows 机器上成功过,但最近我换了这台 Mac 之后不知道怎么就失败了,会报如下错误:

fatal: unable to access 'https://github.com/**/**/': Proxy CONNECT aborted

换成上面的方法就好了。

### 解决 GitHub 命令行连接失败的方法 当遇到 GitHub 命令行连接失败的情况时,可能的原因有很多。以下是几种常见的解决方案: #### 使用 SSH 密钥验证 如果通过 HTTPS 方式克隆仓库出现问题,则可以尝试使用 SSH 进行身份验证。 1. **生成新的 SSH 密钥** 如果还没有设置过 SSH 密钥,可以通过以下命令来创建一个新的密钥: ```bash ssh-keygen -t ed25519 -C "[email protected]" ``` 2. **添加 SSH 私钥到代理程序中** 启动 SSH 代理并加载私钥文件: ```bash eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 ``` 3. **将公钥添加至 GitHub 账户** 将新生成的 `.ssh/id_ed25519.pub` 文件内容复制粘贴到 GitHub 的 SSH 和 GPG 密钥管理页面下[^1]。 #### 修改 Git 配置以适应网络环境 对于某些特定地区或网络条件下访问 GitHub 受限的问题,调整本地 Git 设置可能会有所帮助。 - 更改远程 URL 协议为 `git@github.com:` 开头的形式,而不是默认的 HTTPS 地址。 对于 Hexo 用户来说,在配置 `_config.yml` 中指定部署方式时应采用如下形式: ```yaml deploy: type: git repository: git@github.com:<Your-Github-Username>/<Your-GitHub-Repo>.git branch: main ``` 此处需替换 `<Your-Github-Username>` 和 `<Your-GitHub-Repo>` 为自己实际使用的名称。 #### 处理 gnutls_handshake 错误 (针对 Ubuntu 系统) 在较旧版本的操作系统上操作 AWS CodeCommit 或其他基于 SSL/TLS 的服务时可能出现此错误。为了修复该问题,建议更新系统的 OpenSSL 库以及安装必要的依赖项: ```bash sudo apt-get update && sudo apt-get upgrade openssl libssl-dev ca-certificates ``` 另外还可以考虑升级整个操作系统内核版本或者切换到更现代发行版上来获得更好的兼容性和安全性支持[^2]。 #### 替代源码库地址 有时由于地域限制或其他原因无法正常拉取官方提供的资源链接,这时可以选择更换国内镜像站点作为临时措施继续开发工作而不影响项目进度。例如修改 hexo 初始化脚本里的常量定义部分指向一个可信赖且稳定的第三方托管平台实例: ```javascript const GIT_REPO_URL = 'https://gitee.com/hexojs/hexo-starter.git'; ``` 这里选用的是 Gitee 平台上的对应 fork 版本[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值