GitLab:如何找到 SSH 密钥的所有者

GitLab: How to find the owner of an SSH key

给定已在 GitLab 注册的 SSH public 密钥或指纹,我如何找出与该密钥关联的帐户?

请注意,密钥可能已注册为 "deploy key,",在这种情况下,我想知道注册它的帐户。

我更想知道使用标准 Web UI(如果可能)和通过 REST API 以编程方式执行此操作的方法。如果这些都不可能,我会在必要时采取涉及深入 GitLab 内部的答案(例如,通过对 GitLab 数据库的查询)。

我没有看到任何将 SSH 密钥指纹作为参数的 public API(例如 User API)。

我看到它仅用作 内部 API,以检索实际的 SSH 密钥:merge request 250.

That code 可以为您提供有关如何编写自己的搜索代码的线索。

如果您可以访问 postgres 控制台:

root@gitlab:/# gitlab-psql
    psql (9.6.8)
    Type "help" for help.

    gitlabhq_production=#
    gitlabhq_production=# select a.name,a.username,b.fingerprint 
from users a, keys b where a.id=b.user_id;

         name      | username |                   fingerprint                   
    ---------------+----------+-------------------------------------------------
     Administrator | root     | f4:cc:ec:76:d0:1c:86:1d:45:6d:a7:6e:b3:df:32:7c
    (1 row)

通过 GitLab omnibus 安装,您可以使用 rails 控制台:

gitlab-rails console
> User.find(Key.find_by(fingerprint: '00:00:00:00...').user_id)

将指纹值替换为密钥的md5指纹。