USERAUTH 因 Github 和 Spring 云配置的私钥文件而失败

Posted

技术标签:

【中文标题】USERAUTH 因 Github 和 Spring 云配置的私钥文件而失败【英文标题】:USERAUTH fail with private key file for Github and Spring cloud config 【发布时间】:2019-09-23 05:42:05 【问题描述】:

我尝试使用使用私钥的方法(具有密码并从文件添加到 ssh-agent)(根据this stack post):

spring:
  cloud:
    config:
      server:
        git:
          uri: git@github.com-forApp:myorg/myrepo.git
          search-paths: 'application'
          clone-on-start: true
          private_key_file: ~/.ssh/id_rsa

但我不断得到

org.eclipse.jgit.api.errors.TransportException: git@github.com:myorg/myrepo.git: USERAUTH 失败

我是否必须像doc says 那样将密钥粘贴到配置文件中,还是只能以某种方式指向密钥文件?

编辑

实际上,private_key_file 根本不需要或被 Spring 忽略。但是你需要 ~/.ssh/config 部分指向私钥才能使用:

Host github.com-forApp # used in spring uri 
       HostName github.com
       User git
       IdentityFile ~/.ssh/gitHubKey

【问题讨论】:

你配置你的 github 来接受你的 ssh 密钥了吗? @BurakAkyıldız 是的,例如,当我使用 git 时,它使用我的 ssh 密钥,无需登录/密码 【参考方案1】:

我能够复制您的行为并通过以下方式解决它。让我知道你的想法。

USERAUTH fail 发生是因为您没有提供 RSA 私钥的密码。(password 用于基本身份验证,passphrase 用于 ssh 私钥)

spring:
  cloud:
    config:
      server:
        git:
          uri: git@github.com:myorg/myrepo.git
          search-paths: 'application'
          clone-on-start: true
          passphrase: myprivatekeypassword

默认情况下,~/.ssh/id_rsa 在 GIT SSH 身份验证期间发送(使用命令 ssh -vT git@github.com 进行测试。您不需要在配置中指定它。另外,我不确定 private_key_file 是否有效,因为我不知道'没有看到任何官方文档。

如果您在 .ssh 下有不同的命名 RSA 文件,那么我建议您在 ~/.ssh/config 下创建配置文件,其中包含 github 主机详细信息并识别文件。

这是一个例子。

Host github.com
    IdentityFile ~/.ssh/mygitid_rsa

检查this堆栈答案以获取更多详细信息,这些详细信息需要在配置中提供私钥文件路径的配置。

【讨论】:

这完全是关于添加 passphrase ,即使使用 private_key_file 也不起作用,它也出现在您链接的答案中。无论是否添加到ssh-agent,它都有效。只有在将更改添加到配置仓库时,它才会要求输入密码 @mCs 正确。将它添加到 ssh-agent 并不重要,因为底层的 JGit 库没有引用它。 实际上,private_key_file 根本不需要或被 Spring 忽略。但是您需要指向私钥的~/.ssh/config 部分才能在我的问题中使用 @mCs 是的。我分享的堆栈答案也是想要该功能,但尚不支持!。

以上是关于USERAUTH 因 Github 和 Spring 云配置的私钥文件而失败的主要内容,如果未能解决你的问题,请参考以下文章

net.schmizz.sshj.userauth.UserAuthException:用尽可用的身份验证方法

护照因 404 失败 - GitHub 的 InternalOAuthError 为啥?

需要从 SQL Server 中的另一个表访问用户名

开源有国界?又有开发者在 GitHub 上因国籍被拒绝合作,网友吵翻天

Github 项目的 Maven 版本因使用错误的 Github 帐户而失败

著名npm包被毁,GitHub强烈谴责!开源作者因反俄给代码投毒遭猛烈抨击