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

USERAUTH fail with private key file for Github and Spring cloud config

我尝试使用使用私钥的方法(具有密码并从文件添加到 ssh-agent)(根据 this 堆栈 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 fail

我是否必须完全按照 doc says 的方式将密钥粘贴到配置文件中,还是可以以某种方式指向密钥文件?

编辑

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

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

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

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认证期间发送(用命令[=16=测试]。你不需要在配置中指定它。另外,我不确定是否private_key_file 是否有效,因为我没有看到它的任何官方文档。

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

这是一个例子。

Host github.com
    IdentityFile ~/.ssh/mygitid_rsa

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