使用ssh身份验证的IntelliJ设置存储库

时间:2017-05-13 04:34:32

标签: github intellij-idea

我正在尝试使用Intellij 2017.1中的设置存储库功能,但我想使用ssh网址代替https而不是https。我不喜欢处理那些第一次创建后你无法复制的个人访问令牌。所以我正在尝试使用ssh但是当我点击“覆盖本地”时,我收到以下错误

  

无法设置上游存储库:只读文件系统

我是否被迫使用https或者有办法将其配置为使用ssh?我的ssh键在终端中工作正常,它位于正常位置ruby -v ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]

3 个答案:

答案 0 :(得分:3)

不能,并且不能用于某些SSH设置

对ssh的“设置存储库”支持仅限于Java jgit实现。可以将新项目和现有项目配置为使用OS本机ssh,但是“设置存储库”功能会忽略此首选项。

因此,任何阻止它与SSH设置一起使用的jgit限制都将阻止“设置存储库”功能无法正常使用。

  

设置存储库是基于JGit的单独功能,它与Version控件-Git无关,这就是为什么在那里更改设置无效的原因。

     

设置存储库没有本机SSH模式,也无法从ssh-agent中受益。

     

Dmitriy Smirnov(JetBrains)— Settings Repository feature always asks for SSH key password even though key is in my SSH agent already

  

我下载并正在尝试在设置库中覆盖本地设置时遇到问题时,正在新计算机上设置IntelliJ。设置存储库内部如何使用Git似乎是一个问题。以下是尝试使用设置存储库功能以及克隆存储库内置本地的示例SSH。我不确定现在如何使其正常工作。

     

弗拉基米尔·克里沃舍夫— Settings repository - add Native SSH mode (IDEA-173223)

答案 1 :(得分:1)

设置存储库可以使用SSH密钥。

确保您正确指定了网址,git@github.com:username/Repo.git 如果您的ssh密钥未被称为id_rsa / id_rsa.pub,请确保在.ssh/config

中正确引用它们

此外,可能会发生错误,因为某些原因IDE无法覆盖本地配置文件。检查IDE logs是否有任何相关错误。

答案 2 :(得分:1)

此答案可能无法解决您的问题,但我仍会添加它,因为此页面是Google的“ intellij设置存储库身份验证失败”请求的第一个结果。

添加设置存储库时出现“验证失败”错误的问题。升级到提供新版本的ssh-keygen二进制文件的macOS Mojave 10.14.1之后,我遇到了这个问题。

原因是我用ssh-keygen -t rsa -C "Michael Ledin" -b 4096命令生成的新的ssh密钥。

检查您的私密SSH密钥(通常为~/.ssh/id_rsa)。如果以

开头
-----BEGIN OPENSSH PRIVATE KEY-----

然后具有新的RFC4716密钥格式,基于IntelliJ的IDE使用的JGit当前不支持该格式。

要解决此问题,您可以:

  1. 以旧的“ PEM”格式生成新密钥,并添加-m "PEM"选项:

    ssh-keygen -t rsa -C "Michael Ledin" -b 4096 -m "PEM"
    
  2. ,或者如果您已经将公用密钥添加到ssh远程控制和存储库中,并且很难在任何地方用新密钥替换它,那么您必须将其转换为旧的PEM格式:

    1)ssh-keygen没有提供将私钥从新格式转换为旧格式的方法;

    2),因此首先安装putty并将私钥转换为SSH2格式(我想您的当前密钥存储在~/.ssh/id_rsa中):

    brew install putty
    mv ~/.ssh/id_rsa ~/.ssh/id_openssh
    puttygen ~/.ssh/id_openssh -O private-sshcom -o ~/.ssh/id_ssh2     
    

    3)接下来将SSH2密钥转换为PEM:

    ssh-keygen -i -f ~/.ssh/id_ssh2 > ~/.ssh/id_rsa
    rm ~/.ssh/id_ssh2
    

    4)现在,您已经拥有旧PEM格式的私钥~/.ssh/id_rsa,可以供基于IntelliJ的IDE使用;原始密钥存储在~/.ssh/id_openssh文件中,可以将其删除:

    rm ~/.ssh/id_openssh
    

用于创建此答案的链接:

Convert OpenSSH private keys to RSA PEM

ssh-keygen does not create RSA private key