当我尝试克隆仓库时,我得到一个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使用此公钥?我非常困惑,目前无法正常工作。
答案 0 :(得分:2)
终端中的git工作正常,但是Sublime Merge我遇到权限错误。
第一:
私钥已使用Git 2.19.2生成,这意味着openssh 7.8+刚刚将其私钥默认格式从PEM(每行64个字符)更改为“ OPENSSH”(每行70个字符)。
参见“ Jenkins: what is the correct format for private key in Credentials”
尝试并重新生成私钥(并在GitLab上注册),但这一次是:
ssh-keygen -m PEM -t rsa -P "" -f mynewkey
这是排除Sublime Merge对该键的任何解释错误。
第二,as the OP discussed here,带有密码短语的SSH私钥似乎不受支持,除非ssh-agent已正确配置为缓存所述密码短语。
macOS上的KeyChain可以为我处理所有事情(没有任何ssh配置;我仍对所有存储库使用默认的id_rsa)。
我终于可以使用它了:
ssh-add -K ~/.ssh/[your-private-key]
-K
选项位于Apple的标准版本ssh-add
中,当您向ssh-agent添加ssh密钥时,该选项将密码短语存储在您的钥匙串中。
答案 1 :(得分:1)
对于那些感兴趣的人,我首先通过从命令行启动ssh-agent,然后使用'ssh-add'命令将我的密钥添加到ssh-agent,然后从同一打开的tty中使它在Ubuntu 18.04上运行。 ,使用以下命令在当前目录中启动Sublime Merge:
smerge . &
这样,每次Sublime Merge使用您的ssh密钥时,在后台运行的ssh-agent进程都会处理为您输入的密码。