V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
404www
V2EX  ›  程序员

请教一下使用 git 报错

  •  
  •   404www · 95 天前 · 1989 次点击
    这是一个创建于 95 天前的主题,其中的信息可能已经有所发展或是发生改变。
    fatal: unable to access 'https://github.com/xxx/xxxx.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 127.0.0.1:10809
    

    看起来像是代理出了问题,直接使用网页是可以连接到 github 的

    14 条回复    2024-08-18 21:15:14 +08:00
    Rache1
        1
    Rache1  
       95 天前
    所以你的 10809 端口这个代理有在正常工作么,如果有的话,更新一下你的订阅试试?如果没有,那清理掉代理试试?
    404www
        2
    404www  
    OP
       95 天前
    @Rache1 有的,v2rayn 是启动了的
    404www
        3
    404www  
    OP
       95 天前
    10809 端口的代理是正常工作的,我在 git 中测试`curl -x http://127.0.0.1:10809 -I https://www.google.com` 返回结果正确
    yjxjn
        4
    yjxjn  
       95 天前
    换 fastgithub 就行了,之前我的 git 也不稳定。懒得去深究端口问题了。
    apuslilie
        5
    apuslilie  
       95 天前
    gitconfig 试一下配置成 socks5 代理?
    Rache1
        6
    Rache1  
       95 天前
    @404www #2 看看 V2Ray N 的日志上有什么报错没,另外确认一下,在浏览器上访问 GitHub 时,走代理了吗,因为 GitHub 有的时候还是能够直连的,有可能你浏览器访问的时候没走到代理,终端又走到了,
    yb2313
        7
    yb2313  
       95 天前
    直接开 tun 模式, 给它惯的😡
    darkengine
        8
    darkengine  
       95 天前
    设置一下 shell 的 proxy
    StarUDream
        9
    StarUDream  
       95 天前
    ```
    Host github.com
    User git
    HostName ssh.github.com
    Port 443
    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7890 %h %p
    ```

    配置一下 `HostName ssh.github.com` 就可以了
    eaststarpen
        10
    eaststarpen  
       95 天前
    https://hellodk.cn/post/975

    我珍藏的 CLI github 代理指南

    p.s. 还是透明代理好用
    epiphyllum
        11
    epiphyllum  
       95 天前   ❤️ 4
    当你配置的代理以`https://`开头时,git 会首先使用 TLS 连接这个代理服务器。
    例如,假设我使用了以下命令配置代理:
    `export HTTPS_PROXY=https://127.0.0.1:10809`
    `git config --global https.proxy https://127.0.0.1:10809`
    在 git 发起请求时抓包看一下,可见 git 给 HTTP 代理发了一个 TLS Client Hello 。v2rayn 日志也提示收到一堆非 HTTP/1.1 的二进制,Git 也返回楼主遇到的同款错误。

    而 v2rayn (包括 xray/v2fly/sing-box 等)代理软件显然不会自己给 127.0.0.1 签一个 TLS 证书(毕竟麻烦&没必要),它们开放出来的、用于本地访问的 HTTP 代理是不支持像各种网站服务器那样接收 HTTPS/TLS 连接的。


    解决方法:
    将"https://"替换成"http://",或者配置 socks5 代理。


    这里有几个容易混淆的点:

    1. HTTPS_PROXY 或 https.proxy 并不是说这里必须要填一个 HTTPS 代理,它的意思是“指定访问 HTTPS 的服务时所用的代理”。
    同理,HTTP_PROXY 或 http.proxy 的意思是“访问未加密的 HTTP 服务时所用的代理”

    2. 在此场景中"https://"开头的代理和另一个概念(例如:“xx 免费代理”“全球开放代理”那些网站/场景下所说的“HTTPS 代理”)是不一样的:
    - 这里提到的"https://"开头的代理需要客户端用 TLS 连接
    - 那些 xx 网站等场景下经常说的 HTTPS 代理指的是:支持"CONNECT"这一 HTTP 请求方法的、基于 HTTP 协议的代理;
    - (因为当年有好些“普通 HTTP 代理”只支持或开放 GET 、POST 等方法,访问"https://"网站时 TLS/SSL 加密解密由代理服务器处理,代理服务器能看到全部明文
    -( “CONNECT 方法可用于访问使用 TLS/HTTPS 的网站,它实际上提供了一个中继 TCP 流的隧道”
    itning
        12
    itning  
       95 天前
    @epiphyllum #11 👍
    Nile20
        13
    Nile20  
       95 天前
    配置~/.ssh/config 文件,为 ssh 启用代理。linux 的写法参考 StarUDream 的回答,Windows 的写法如下


    Host github.com
    ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -H localhost:10809 %h %p
    404www
        14
    404www  
    OP
       95 天前
    @epiphyllum 感谢大佬,我试一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4046 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:00 · PVG 09:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.