V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
Morii
V2EX  ›  Go 编程语言

如何对 GOPRIVATE 私有仓库使用代理的问题

  •  
  •   Morii · 2022-09-03 23:59:19 +08:00 · 1246 次点击
    这是一个创建于 605 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景:

    公司提供了 VPN ,但是只能全局代理,个人感觉不安全,并且深信服口碑不咋地,于是我在 docker 中启动 vpn ,并向外提供一个 sock5 代理,我希望 go get ≈<private_repo_path>` 走我本地启动的这个 sock5 代理

    我目前的配置:

    • Go env

      GOPRIVATE="公司 Gitlab.net"
      GOPROXY="http://goproxy.cn,direct"
      
    • Git 配置

      [http "https://公司 Gitlab.net"]
          proxy = socks5://127.0.0.1:1080
          
      [url "ssh://git@公司 Gitlab.net"]
              insteadOf = http://公司 Gitlab.net/
      
      [url "[email protected]:"]
              insteadOf = http://公司 Gitlab.net/
      
    • netrc 配置

      machine 公司 Gitlab.net
            login username
            password accessToken
      

    问题:

    我期望 git clone 公司 Gitlab/repo_name 命令走我启动的 sock5 代理,目前已经成功, 因为我配置了 git 的 http 代理。

    但是 go get 公司 Gitlab/repo_name 时显示超时

    了解到 go get 本质上是 git clone 并且我设置了 ssh insteadOf http 时,我认为我应该配置一个 SSH 的代理

    于是我在 .ssh/config 增加了以下配置

    Host 公司 Gitlab.net
        ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
    

    但是并不起作用

    go get Gitlab.net/repo_name 时显示

    go get: unrecognized import path "公司 Gitlab.net/golang/base": https fetch: Get "https://公司 Gitlab.net/golang/base?go-get=1": dial tcp 10.130.xxx.xxx:443: i/o timeout
    
    

    看了下 10.130.xxx.xxx 应该是公司 Gitlab.net 的内网 IP ,请问我该怎么办?

    3 条回复    2022-09-04 15:13:24 +08:00
    zzyphp111
        1
    zzyphp111  
       2022-09-04 06:00:35 +08:00 via iPhone
    之前也遇到这个问题了等大佬回答前

    我是绕过了代理问题,用了共享目录方案,在本机 clone 代码,在 docker 里用,省了时间,也实现了目的。
    lysS
        2
    lysS  
       2022-09-04 10:26:01 +08:00
    公司的 VPN 、公司装的深信服。。。你信不信得不过有啥用,总之自找麻烦。

    “insteadOf = http://公司 Gitlab.net/” 这个应该和上面一条一样吧?

    “git clone 公司 Gitlab/repo_name 命令走我启动的 sock5 代理,目前已经成功” 我怀疑这个不是走的代理,你抓包看看

    还有就是你的 docker 映射端口了没有?
    Morii
        3
    Morii  
    OP
       2022-09-04 15:13:24 +08:00
    @lysS #2
    @zzyphp111 #1

    找到问题了,go get 不仅仅走了 ssh 去 clone ,还有一次 http 访问,所谓加上 https_proxy=sock5://xxxxx go get xxxx 就可以了。


    > 公司的 VPN 、公司装的深信服。。。你信不信得不过有啥用,总之自找麻烦。

    深信服那个软件会安装奇怪的证书,软件退出去之后还会残留一个奇怪的进程。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2400 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 15:03 · PVG 23:03 · LAX 08:03 · JFK 11:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.