[Go 编程语言] 如何对 GOPRIVATE 私有仓库使用代理的问题


场景:

公司提供了 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 "git@sc.happyelements.net:"] 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 ,请问我该怎么办?

发表回复

您的电子邮箱地址不会被公开。