Java 如何使用SSH从spring配置服务器应用程序连接到Bitbucket?

Java 如何使用SSH从spring配置服务器应用程序连接到Bitbucket?,java,spring,ssh,bitbucket,spring-cloud-config,Java,Spring,Ssh,Bitbucket,Spring Cloud Config,我创建了一个简单的SpringCloudConfigServer应用程序和相应的“客户端”应用程序。配置服务器从git repo读取配置文件,客户端应用程序从配置服务器中提取它们。它使用存储在本地git repo中的配置文件。我现在想连接到远程Bitbucket服务器 我见过一些使用用户名和密码硬编码的示例,但我不想硬编码这些。我想使用SSH密钥 我在文件里找到了 我在Bitbucket中将公钥添加到我的回购协议中,并且我有以下application.yml文件: server: port:

我创建了一个简单的SpringCloudConfigServer应用程序和相应的“客户端”应用程序。配置服务器从git repo读取配置文件,客户端应用程序从配置服务器中提取它们。它使用存储在本地git repo中的配置文件。我现在想连接到远程Bitbucket服务器

我见过一些使用用户名和密码硬编码的示例,但我不想硬编码这些。我想使用SSH密钥

我在文件里找到了

我在Bitbucket中将公钥添加到我的回购协议中,并且我有以下application.yml文件:

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: git@mybitbucketserver/ubp/config-server.git
          cloneOnStart: true
          ignoreLocalSshSettings: true
          hostKey: publicKeyLabel
          hostKeyAlgorithm: ssh-rsa
          privateKey: "-----BEGIN RSA PRIVATE KEY-----MIIEoAIBAAKmJyC-----END RSA PRIVATE KEY-----"
其中publicKeyLabel是添加到bitbucket上回购的标签的名称。运行此配置服务器应用程序时,出现以下错误:

org.eclipse.jgit.api.errors.InvalidRemoteException: Invalid remote: origin
嵌套错误为:

Caused by: org.eclipse.jgit.errors.NoRemoteRepositoryException: git@mybitbucketserver/ubp/config-server.git: not found.
我仔细检查了网址。附在回购协议上的公钥在我从Openshift连接的代码中与私钥一起工作,因此我知道它可以工作(在本例中,我删除了一些密钥)

有什么建议我可以试试吗?看到这么多使用SSH的例子,每个人似乎都在硬编码PW:|


如果有更好的方法,我会洗耳恭听的?理想情况下,我的最终目标是不在代码中包含私钥等,但我希望先实现这一点,然后找出可以存储PK的位置。

请查看下面的内容。我希望这些帮助您一次隔离并实现设置1的目标:

  • 让我们先让您的当前设置正常工作,并在配置服务器和bitbucket之间建立连接,然后再从外部加载SSH密钥(非硬编码)

    • privateKey
      是一个多行值。因此,它必须在YAML中注册为多行。正如您在中看到的,它使用了“|”,表示块样式指示器。你也可以阅读更多的细节
    • <>这不应该是个问题,但以防万一,考虑用SSH协议显式地编写Git URI,如:<代码>ssh://git@mybitbucketserver/ubp/config server.git
    • 如果(且仅当)在该更改之后您遇到另一个错误,例如“不是有效的私钥”,您可以稍后参考
  • 避免在YAML中写入私钥。以下是我可以分享的一些建议:

    • 一种方法是在本地SSH上注册密钥,例如
      /root/.SSH/id\u rsa
      ,然后设置
      ignorelocalsshs设置:false
    • 另一种方法是这样的:
      privateKey:${git.repository.key}
      。我们必须在我们可以遵循的选项中外部定义
      git.repository.key

  • 尝试在CLI中克隆相同的repo,以查看它是否有效。