语境:
从 AMI 备份部署了一个新的 Gitlab 服务器实例。当尝试从开发服务器重新建立与该实例的连接时,发出命令时git pull
会提示输入密码。
用户@devserver:/var/www/html/sites/project (develop)$ git pull
[电子邮件保护]的密码:
故障排除:
git pull
当从开发服务器尝试并/var/log/auth.log
在 Gitlab 服务器上跟踪时,我收到此错误消息:
身份验证被拒绝:目录 /var/opt/gitlab 的所有权或模式错误
然后,我调整服务器/etc/ssh/sshd_config
文件并进行修改
StrictModes yes
,意识到这一定与 SSH 密钥问题或文件夹文件StrictModes no
的权限有关,这将允许我的用户密钥通过严格模式。.ssh
StrictMode no
https://ubuntuforums.org/showthread.php?t=831372
发出/etc/init.d/ssh reload
,重新尝试git pull
。这次成功了,并/var/log/auth.log
显示以下内容:
sshd[15283]:Accepted publickey for git from 52.X.X.X port 62002 ssh2:RSA
并git pull
展示
user@devserver:/var/www/html/sites/project (develop)$ git pull
Already up-to-date.
现在验证 .ssh 文件夹和文件的权限设置(即使它们之前没有改变并且正常工作)
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts
chmod 644 ~/.ssh/config
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
我恢复为 StrictModes 并重新加载 ssh 配置设置,git pull
问题依旧。
身份验证被拒绝:目录 /var/opt/gitlab 的所有权或模式错误
常见答复:
Have you tried rekeying SSH keys and adding them to Gitlab SSH user settings?
yes
->为 Gitlab 设置 SSH 密钥
Have you tried rebuilding authorizated_keys file?
yes
->重建authorized_keys文件
有人能解释一下为什么从 AMI 部署新的 Gitlab 服务器后设置了 StrictMode yes 时 git pull 不起作用吗?
我非常感谢花时间阅读我的问题并提供反馈/答案的任何人!希望有人遇到过这种情况...
答案1
我花了一整天的时间寻找答案,终于找到了这个问题。似乎在服务器重新启动后,权限/var/opt/gitlab
对组权限来说是可写的。这与StrictModes yes
StrictModes - 指定 sshd 是否应在接受登录之前检查用户文件和主目录的文件模式和所有权。这通常是可取的,以防用户无意中将其目录或文件置于全球可写状态。默认值为“是”。具体而言,StrictModes 检查以下文件、目录和组件路径名是否归当前用户或超级用户所有,并且它们不是组或全球可写的。参考这里
发布chmod 755 /var/opt/gitlab
(删除写入权限)后,问题现已解决。