无法从GitHub私有仓库拉取Go包,报ssh无法解析主机名错误
问题排查解决步骤
- 第一步:验证基础SSH连通性
直接执行ssh -T git@github.com,如果返回「Hi 你的用户名! You've successfully authenticated...」则SSH配置正常,否则先排查SSH层面问题:- 执行
nslookup github.com确认系统DNS能正常解析GitHub地址,解析失败请修改系统DNS配置 - 检查
~/.ssh/config文件,确认没有错误的GitHub Host配置(比如错填Hostname为不存在的地址) - 确认私钥文件权限为600,对应公钥已经上传到你的GitHub账户
- 执行
- 第二步:校验Git重写规则配置
执行git config --global --get url."git@github.com:".insteadOf,确认返回值为https://github.com/,没有多/少字符的错误;如果存在多Git配置层级,执行git config --list --show-origin检查是否有其他规则覆盖了全局配置。 - 第三步:修正go get命令写法
你给出的脚本中go get package "xxx"多了多余的package参数,该参数会被Go识别为包路径的一部分,最终拼接出错误的地址触发主机解析失败,正确写法为:go get "github.com/${GITHUB_ORG}/${GITHUB_REPO}/${GO_PACKAGE}" - 第四步:确认环境变量配置正确
分别执行echo $GOPRIVATE、echo $GITHUB_ORG,确认值与预期的组织地址完全一致,没有拼写、大小写、特殊字符错误。 - 第五步:确认SSH密钥生效范围
你脚本中eval $(ssh-agent)、ssh-add的操作仅在当前脚本的Shell进程内生效,如果你在终端直接执行go get,需要在当前终端会话中先执行一遍这两个命令,或者直接在~/.ssh/config中配置固定密钥,无需每次手动添加:Host github.com HostName github.com User git IdentityFile 你的私钥文件绝对路径 IdentitiesOnly yes - 第六步:打印详细日志定位问题
执行go get -v "你的私有包地址",查看日志中实际请求的Git地址,确认是否有拼接错误的主机名。
内容的提问来源于stack exchange,提问作者talkersoft
相关产品推荐
相关产品推荐

