【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?

gitlab 配置了SSH-KEY,依然提示输入密码?

环境上有多个配置,现在想要新增一组用于gitlab的公-私钥对

1.ssh-keygen -o -t rsa -b 4096 -C “[email protected]” -f C:\Users\SW.ssh\id_rsa_gitlab
2.gitlab站点上添加对应的公钥(id_rsa_gitlab中的内容)
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第1张图片

随便clone一个仓库:
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第2张图片

解决办法:

先调试,看看具体哪一步出错了。使用以下命令(需要将gitlab.com换成你对应的ip)

ssh -vvvT [email protected]
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第3张图片

可以看到使用public key去服务器验证时,依然是使用的id_rsa文件,而不是刚刚生产的id_rsa_gitlab文件,因此需要检查config文件。

如下:可以看到之前由于host配置错误,导致ssh连接时,不能使用到id_rsa_gitlab去验证
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第4张图片

辟谣:

1.此时需要在gitlab服务器上,设置git用户的密码?
2.将/etc/ssh/sshd_config中的PermitEmptyPasswords修改为True?

从ssh -vvvT 打印的日志来看,当我们尝试连接时,先使用public key去连接,当连接公钥被拒绝时才会使用密码验证的方式。即时git用户是被锁定的状态,只要公钥配置正确,我们也可以连接!
所以上述方案都是从密码验证的角度解决问题,而不是公钥。

gitlab搭建好以后,执行clone仓库却提示仓库不存在?

如下,如果在clone时,你是通过输入ssh的密码连接的,那么clone时必须加上服务器上的相对路径,即:
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第5张图片
使用git用户通过密码的方式登录进来,默认目录是/opt/gitlab/,所以想要clone还必须加上git-data/repositories/的相对路径。
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第6张图片
然而如果是通过公钥连进来,就不需要加前缀,就能直接clone,如下:
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第7张图片

总结

公钥连接好处远远大于密码连接:
1.不会遇到各种蛋疼的问题:仓库不存在呀,密码错误呀等等
2.比较安全,用户不能通过ssh连接shell来执行删库跑路的骚操作!
3.遇到问题多看官网文档,本例来说,gitlab其实已经给了一个连接可以解决这些问题,哈哈!
【gitlab配置采坑】SSH-key设置不生效?git clone报仓库不存在?_第8张图片

你可能感兴趣的:(测试)