SSH导入私有自建GitLab Go项目遇未知版本及密码验证问题
私有GitLab仓库Go模块导入问题排查
一、初始错误场景
执行go get -x gitlab.wtf.notworking/bbq/tools@latest导入私有GitLab仓库的Go模块时,出现以下错误:
kbacon@kbacons-MacBook-Pro bbz % go get -x gitlab.wtf.notworking/bbq/tools@latest # get https://gitlab.wtf.notworking/bbq/tools?go-get=1 # get https://gitlab.wtf.notworking/bbq/tools?go-get=1: 200 OK (0.413s) mkdir -p /Users/kbacon/go/pkg/mod/cache/vcs # git3 https://gitlab.wtf.notworking/bbq/tools.git # lock /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179.lock# /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179 for git3 https://gitlab.wtf.notworking/bbq/tools.git cd /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179; git tag -l 0.013s # cd /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179; git tag -l cd /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179; git ls-remote -q origin 0.020s # cd /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179; git ls-remote -q origin # get https://gitlab.wtf.notworking/bbq/tools.git # get https://gitlab.wtf.notworking/bbq/tools.git: 200 OK (0.186s) go: gitlab.wtf.notworking/bbq/tools@v1.0.0: reading gitlab.wtf.notworking/bbq/tools/go.mod at revision v1.0.0: unknown revision v1.0.0
相关配置信息:
.gitconfig初始配置:[user] name = kbacon email = kbacon@email.com [url "git@gitlab.wtf.notworking/"] insteadof = https://gitlab.wtf.notworking/go.mod内容:module bbz go 1.14 require ( gitlab.wtf.notworking/bbq/tools v1.0.0 )- GitLab仓库克隆地址:
ssh://git@gitlab.wtf.notworking:2224/bbq/tools.git - SSH配置文件(
~/.ssh/config):Host gitlab.wtf.notworking User kbacon@email.com Hostname gitlab.wtf.notworking IdentityFile ~/.ssh/company_gitlab # path to private key AddKeysToAgent yes
二、调整配置后的问题
将.gitconfig调整为以下内容后:
[user] name = kbacon email = kbacon@email.com [url "git@gitlab.wtf.notworking:2224/"] insteadof = https://gitlab.wtf.notworking/
执行go get命令时,系统要求输入git@gitlab.wtf.notworking的密码,而非使用SSH密钥验证,命令输出:
kbacon@kbacons-MacBook-Pro bbz % go get -x gitlab.wtf.notworking/bbq/tools@latest # get https://gitlab.wtf.notworking/bbq/tools?go-get=1 # get https://gitlab.wtf.notworking/bbq/tools?go-get=1: 200 OK (0.424s) mkdir -p /Users/kbacon/go/pkg/mod/cache/vcs # git3 https://gitlab.wtf.notworking/bbq/tools.git # lock /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179.lock# /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179 for git3 https://gitlab.wtf.notworking/bbq/tools.git cd /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179; git tag -l 0.030s # cd /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179; git tag -l cd /Users/kbacon/go/pkg/mod/cache/vcs/3bd57e1dd1ed847c1ac192f16c5f67541135ce037a175de23ec5fb5051d10179; git ls-remote -q origin git@gitlab.wtf.notworking's password:
问题原因
- SSH配置的User字段错误:GitLab的SSH服务默认用户是
git,而非个人邮箱。将User设为邮箱会导致SSH身份验证使用错误用户名,密钥验证失败后自动 fallback 到密码验证。 - SSH配置未指定端口:仓库的SSH端口是2224,但原SSH配置里没有
Port字段,Git会使用默认的22端口连接,无法匹配到正确的仓库服务,进而触发密码提示。 - 初始错误中
unknown revision v1.0.0是因为.gitconfig的insteadof映射未包含端口,导致Git无法正确访问仓库获取标签信息。
解决方案
1. 修正SSH配置文件(~/.ssh/config)
将配置修改为:
Host gitlab.wtf.notworking User git Hostname gitlab.wtf.notworking Port 2224 IdentityFile ~/.ssh/company_gitlab AddKeysToAgent yes
User改为git:符合GitLab SSH服务的默认用户要求- 添加
Port 2224:对应仓库的自定义SSH端口
2. 验证SSH连接
执行以下命令测试是否能无密码登录GitLab:
ssh gitlab.wtf.notworking
如果成功,会显示GitLab的欢迎信息。
3. 调整.gitconfig(可选)
可以保持调整后的.gitconfig,或者改回初始的映射(因为SSH配置已指定端口,Git会自动使用正确端口):
[url "git@gitlab.wtf.notworking/"] insteadof = https://gitlab.wtf.notworking/
4. 重新执行go get命令
go clean -modcache go get -x gitlab.wtf.notworking/bbq/tools@latest
先清理模块缓存,再重新拉取模块。
内容的提问来源于stack exchange,提问作者prolink007
相关产品推荐
相关产品推荐

