个别服务器出现git clone提示需要密码或者无法连接的问题

Life is short , "play" more!
本文来自lihao's Blog,转载请注明。

因为代码仓库地址变更, 昨天在更新git remote url时, 发现一个诡异的问题: 在部分服务器上进行下拉代码时才会发生。

例如我执行 git clone ssh://[email protected]/ibg/ibg_test.git (git clone [email protected]:ibg/ibg_test.git “[email protected]:ibg/ibg_test.git” == “ssh://[email protected]/ibg/ibg_test.git” ) ,在某些机器上可以正确拉取到代码,某些机器上拉取时提示

根据现象初步认为, 远端的gitlab 仓库地址是没有问题的, 因为某些机器是可以正常拉取代码。

删除~/.ssh/known_hosts后,我们重新再次 git clone ssh://[email protected]/ibg/ibg_test.git (git clone [email protected]:ibg/ibg_test.git )

发现其请求的竟然是22222 端口。 但是正常可以拉取代码的机器没有显示22222, 那应该是默认的ssh 22端口。 这时候进一步分析,为什么git 访问ssh 协议的代码仓库地址时, 默认使用22222呢。

我们需要检查2个地方的配置。

1) ~/.ssh/config 是否有配置
2) /etc/ssh/ssh_config 是否有配置port 端口号 (如果配置port端口号, 这样 ssh client 默认链接服务器的 端口号)

经过确认,我们的/etc/ssh/ssh_config 配置了port 22222. 为了不影响其他用户使用到该配置,所以在当前决定修改 ~/.ssh/config 配置,这样只会影响当前用户。

添加的配置如下

增加保存后, 再次执行 git clone ssh://[email protected]/ibg/ibg_test.git 已经可以正常拉取代码了。

问题总结:

我们拉取的地址是 ssh://[email protected]/ibg/ibg_test.git , 其实应该是 ssh://[email protected]:22/ibg/ibg_test.git (22是端口号) 但因为某些机器上设定了ssh 默认服务器链接配置的端口号不是22 , 而是其他端口号例如 22222. 那么我们链接的实际地址 ssh://[email protected]:22222/ibg/ibg_test.git, 这样地址不同,就导致我们无法正确拉取代码。

所以这里地址隐藏了端口号,因为默认的端口号可能会导致意想不到的错误。 所以我们这里

此篇文章已被阅读5 次


发表评论

电子邮件地址不会被公开。 必填项已用*标注