Gitlab无法删除ssh密钥。不在UI中,但仍然可以工作

Gitlab无法删除ssh密钥。不在UI中,但仍然可以工作,gitlab,gitlab-api,gitlab-ce,Gitlab,Gitlab Api,Gitlab Ce,Gitlab CE 13.3.5版 我们有一个问题,用户有一个旧的SSH密钥,他们不再使用。用户希望删除SSH密钥。但是,它在用户帐户的UI中不可用 当我们使用以下API查找用户ssh密钥时,它不存在: 但是,如果要通过Gitlab注册的所有SSH密钥查找循环,我可以找到它: 如何删除SSH密钥,使其不可用。这是一个潜在的安全风险,如果私钥被泄露,那么在不删除用户的情况下将无法阻止访问。作为测试,当阻塞用户时,SSH密钥仍然有效 似乎无法通过API删除密钥。由于只有“获取”操作,我会要求Gi

Gitlab CE 13.3.5版

我们有一个问题,用户有一个旧的SSH密钥,他们不再使用。用户希望删除SSH密钥。但是,它在用户帐户的UI中不可用

当我们使用以下API查找用户ssh密钥时,它不存在:

但是,如果要通过Gitlab注册的所有SSH密钥查找循环,我可以找到它:

如何删除SSH密钥,使其不可用。这是一个潜在的安全风险,如果私钥被泄露,那么在不删除用户的情况下将无法阻止访问。作为测试,当阻塞用户时,SSH密钥仍然有效

似乎无法通过API删除密钥。

由于只有“获取”操作,我会要求GitLab管理员(GitLab内部部署服务器的管理员)执行以下操作:

  • 打开关联的数据库并
  • 手动删除该条目
检查一下

我想我只需要澄清一下。这就是最终解决方案的答案,主要是因为我太害怕在live中删除DB中的条目:

以下查询帮助我找到了条目:

select * from keys where id = 27;
如果这实际上是SSH密钥的问题,那么可以使用以下查询更新expiration_at列以使密钥过期:

UPDATE keys SET expires_at = '2020-09-17 08:42:00+02' WHERE id = 27 RETURNING *;
输出实际上向我显示密钥“type”是一个“DeployKey”,它本质上与SSH密钥相同,但它与repos绑定,并且不遵守相同的过期规则(尽管deploy令牌遵守)

这是一件很难在UI中找到的事情,我的做法是查询每个项目的“部署密钥”:

…api/v4/projects//deploy\u密钥

请注意,该密钥可用于多个回购。如果您从其中一个“禁用”它,它仍将在其他回购协议中可用,但您将不知道是哪个项目。幸运的是,只要您不首先禁用密钥,就可以打开使用同一密钥的其他回购协议(这就是我所做的,并且浪费了更多时间来查找另一个存在密钥的项目)。

感谢您更新以下答案:非常有帮助!
...api/v4/projects/<ID>/deploy_keys