docker gitlab-ce 上的 SSH 密钥

docker gitlab-ce 上的 SSH 密钥

公告GitLab 13.10有一个折旧通知使用 authorized_keys 作为 ssh 密钥:

第一种机制(通过授权密钥集成)容易受到竞争条件和无序执行问题的影响,因此很难扩展。 因此,它将在 GitLab 14.0 中被删除。 请参阅问题 #212227了解详情。

快速 ssh 密钥查找文档 (在数据库中快速查找授权的 SSH 密钥 | GitLab) 比如说

对于 Omnibus Docker,AuthorizedKeysCommand 在 GitLab 11.11 及更高版本中默认设置。

当我进入 gitlab 容器的 ssh 配置文件时,我看不到AuthorizedKeysCommand。但是,我也找不到任何关于/var/opt/gitlab/.ssh/authorized_keys我的实际 SSH 密钥的引用,这表明它实际上使用的是快速查找而不是系统authorized_keys文件。

我的配置管理区域 > 网络 > 性能优化已启用Write to "authorized_keys" file。我的理解是,它是部署密钥的备份,而不是该文件将用于所有身份验证。

由于该authorized_keys文件将在 GitLab-14 中弃用(还有两个月?),所以我会提前考虑。我怎么知道删除对该文件的支持是否会让我失望?我可以随时取消选中“写入 authorized_keys”,但我不认为这会立即产生效果。

答案1

OP链接文档在这里给出行政长官版本相同)告诉

将以下内容添加到您的 sshd_config 文件中。这通常位于 /etc/ssh/sshd_config,但如果/assets/sshd_config你使用 Omnibus Docker

Match User git    # Apply the AuthorizedKeysCommands to the git user only
  AuthorizedKeysCommand /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell-authorized-keys-check git %u %k
  AuthorizedKeysCommandUser git
Match all    # End match, settings apply to all users again

由于配置文件位于不常见的位置,因此可能无法找到它。

正如OP已经写的那样,文档随后告诉我们:

ⓘ 对于 Omnibus Docker,AuthorizedKeysCommand在 GitLab 11.11 及更高版本中默认设置。

因此,Omnibus Docker 已配置为使用 GitLab 的专用命令来补充该authorized_keys文件。在综合 Docker版本,它已经为改变做好了准备(对于标准它是一个综合版本,其中不再存在authorized_keys文件,并且命令gitlab-shell-authorized-keys-check将完全接管。

要仔细检查它是否已经使用新的身份验证方法,可以按照文档中建议的测试进行操作:

通过在文件中注释掉用户密钥 authorized_keys(以 开始#注释该行)并尝试提取存储库来确认 SSH 正常工作。

成功拉取意味着 GitLab 能够在数据库中找到该密钥,因为它不再存在于文件中。

相关内容