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

时间:2019-05-05 09:57:09

标签: spring-boot github spring-cloud spring-cloud-config

我试图使用使用私钥的方法(该私钥具有密码,并已从文件添加到ssh-agent中)(根据this堆栈帖子):

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

1 个答案:

答案 0 :(得分:3)

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

USERAUTH fail之所以发生,是因为您没有为RSA私钥提供密码。(password代表Basic Auth,passphrase代表ssh私钥)

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

如果您不愿意在配置中保留私钥密码,则可以不使用密码重新生成RSA密钥,但是我不确定它是否满足您的安全要求。

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

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

这里是一个例子。

Host github.com
    IdentityFile ~/.ssh/mygitid_rsa

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