Google 使用 jclouds 计算项目范围的 SSH 密钥

Google compute project-wide SSH keys with jclouds

我正在尝试使用 jclouds 从 java 代码启动 google 计算实例。它主要工作,但我想使用我定义的项目范围的 SSH 密钥,而不是让 jclouds 生成新的 user/key 凭证。

根据此处的自述文件 - https://github.com/apache/jclouds/tree/master/providers/google-compute-engine:

For an instance to be ssable one of the following must happen: 1 - the project's metadata has an adequately built "sshKeys" entry and a corresponding private key is provided in GoogleComputeEngineTemplateOptions when createNodesInGroup is called. 2 - an instance of GoogleComputeEngineTemplateOptions with an adequate public and private key is provided.

我正在尝试执行上面的 1)。我已经正确配置了项目的元数据(我可以使用它连接到没有 jclouds 生成的凭据的手动创建的实例),但我不知道如何向 GoogleComputeEngineTemplateOptions 提供该密钥?

都没有 GoogleComputeEngineTemplateOptions.Builder.installPrivateKey(String key)GoogleComputeEngineTemplateOptions.Builder.overrideLoginPrivateKey(String key) 似乎有效。

文档非常稀少 - 有人知道怎么做吗?

如果您不提供密钥,jclouds 将默认创建一个密钥。您可以使用以下内容提供您的身份验证私钥并告诉 jclouds 不要生成新私钥:

TemplateOptions opts = computeService.templateOptions()
    .as(GoogleComputeEngineTemplateOptions.class)
    .overrideLoginPrivateKey(privateKey)
    .autoCreateKeyPair(false);