当我尝试克隆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使用此公钥?我非常困惑,现在就开始工作。
git在终端中运行良好,但Sublime Merge I收到权限错误。
第一:
私钥是用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代理被正确配置为缓存所述密码短语。
macOS上的KeyChain为我处理一切(没有任何ssh配置;我仍然对所有的repo使用默认的id_rsa(。
OP bryan在评论中确认:
我终于使用了
ssh-add -K ~/.ssh/[your-private-key]
如GitHub:上所述
-K
选项位于苹果标准版的ssh-add
中,当您向ssh代理添加ssh密钥时,它会将密码短语存储在您的密钥链中。
对于那些感兴趣的人,我首先从命令行启动ssh-agent,然后使用"ssh-add"命令将我的密钥添加到ssh-agent中,然后在同一个打开的tty中,使用以下命令在当前目录上启动Sublime Merge,从而使其在Ubuntu 18.04上运行:smerge . &
这样,每次Sublime Merge使用您的ssh密钥时,后台运行的ssh代理进程都会为您处理输入的密码。