4

当我尝试克隆一个 repo 时,我得到一个git failed with exit code 128.

此外,当我尝试推/拉时,我得到一个git@gitlab.com public key denied.

在我的 ~/.ssh 文件夹中,我有一个config如下所示的文件:

Host mycompany.gitlab.com
    HostName gitlab.com
    User git
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab-company-bryan

终端中的 git 工作正常,但 Sublime Merge 我收到权限错误。

我需要做什么才能让 Sublime 使用这个公钥?我非常困惑,现在让它工作。

4

2 回答 2

5

终端中的 git 工作正常,但 Sublime Merge 我收到权限错误。

第一的:

私钥是使用 Git 2.19.2 生成的,即 openssh 7.8+,它刚刚更改了其私钥默认格式,从 PEM(每行 64 个字符)到“OPENSSH”(每行 70 个字符)。
请参阅“ Jenkins:凭证中私钥的正确格式是什么

尝试重新生成一个私钥(并在 GitLab 上注册),但这次是:

ssh-keygen -m PEM -t rsa -P "" -f mynewkey

那是为了排除 Sublime Merge 对该键的任何解释错误。

其次,正如此处所讨论的 OP,似乎不支持带有密码短语的 SSH 私钥,除非 ssh-agent 被正确配置为缓存所述密码短语。

macOS 上的 KeyChain 为我处理所有事情(没有任何 ssh 配置;我仍在为我的所有存储库使用默认的 id_rsa)。

OP bryan在评论中确认:

我终于让它工作了:

ssh-add -K ~/.ssh/[your-private-key]

正如GitHub 上所解释的:

-K选项位于 Apple 的标准版本中ssh-add,当您将 ssh 密钥添加到 ssh-agent 时,该选项会将密码短语存储在您的钥匙串中。

于 2018-12-11T17:06:26.170 回答
2

对于那些感兴趣的人,我首先从命令行启动 ssh-agent,然后使用“ssh-add”命令将我的密钥添加到 ssh-agent,然后从同一个打开的 tty 中启动 Sublime,从而使其在 Ubuntu 18.04 上运行使用以下命令合并当前目录: smerge . &

这样,每次 Sublime Merge 使用您的 ssh 密钥时,后台运行的 ssh-agent 进程都会为您处理输入的密码。

于 2019-01-21T11:01:51.753 回答