写在前面
我在创建git私有化部署的时候,尝试创建一个名叫git的用户
我按照常规操作进行指定登录脚本,就是useradd -s /usr/bin/git-shell git这里指定的脚本是不存在的
原本打算的是不允许登录的用户,但是可以用来做git的拉取,但是发现拉取(clone)失败了
然后用usermod -s /usr/bin/bash git指定修改用户登录脚本,并且设置密码。
我排查过selinux,排查过防火墙fireware,但是都没有解决!
甚至我想到了/etc/ssh/sshd_config当中,允许密码登录和秘钥登录的开关。
甚至我想到了是不是秘钥文件有错误,或者家目录里有问题
结果是这么个坑爹问题。
原因
实际原因其实很简单,因为我的sshd_config文件里有一句话:
/etc/ssh/sshd_config文件最后加入AllowUsers代码块
AllowUsers root demo1这里用了AllowUsers语句,指定了只允许root用户和demo1用户访问,我的git访问用户自然就无法访问了。
即使是指定非登录脚本,也不行,毕竟得首先连接进去之后,才能执行登录脚本。
所以很简单,把git用户加进去这里就行,当然,也可以把这条语句删除掉。
然后需要重启sshd服务
比如
sudo systemctl restart sshd或者
sudo service sshd restart这样配置就生效了。