公告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
将以下内容添加到您的 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 能够在数据库中找到该密钥,因为它不再存在于文件中。