有人能解释一下为什么从 AMI 部署新的 Gitlab 服务器后设置了 StrictMode yes 时 git pull 不起作用吗?

有人能解释一下为什么从 AMI 部署新的 Gitlab 服务器后设置了 StrictMode yes 时 git pull 不起作用吗?

语境:

从 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的权限有关,这将允许我的用户密钥通过严格模式。.sshStrictMode nohttps://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 文件夹和文件的权限设置(即使它们之前没有改变并且正常工作)

更正 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(删除写入权限)后,问题现已解决。

相关内容