当密钥有密码时,Sublime Merge SSH 失败

bry*_*yan 2 git ssh-keys sublimemerge

当我尝试克隆一个 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
Run Code Online (Sandbox Code Playgroud)

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

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

Von*_*onC 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

OP布莱恩确认的评论

我终于让它与:

ssh-add -K ~/.ssh/[your-private-key]
Run Code Online (Sandbox Code Playgroud)

正如GitHub 上解释的

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