3

我正在使用“mavenDeployer”在“uploadArchives”任务期间使用 ssh/scp,并使用 wagon ssh 实用程序。

我不想将密码编码到 build.gradle 中,而是依赖正确的 ssh 设置。具体来说,我想让用户指定他们的私钥,并将该私钥加载到他们的环境中(ssh-agent、ssh-add 等)。maven repo 有一个共享用户标识,所有真实用户都将他们的 .pub 密钥正确添加到共享用户标识的“authorized_keys”文件中。

虽然 maven/ant 似乎有一个“privateKey”属性,并且 Gradle DSL 接受它,但是当我设置它时它似乎没有任何效果:

        mavenDeployer {
            configuration = pr.configurations.publishJars
            String keyFile = System.properties["user.mavenKey"]
            repository(url: "scp://maven.company.com/path/to/maven") {
                    logger.info("Using SSH key: ${keyFile}")
                    authentication(userName: "maven", privateKey: keyFile)
            }

如果我按照 gradle 文档中的示例输入实际密码,它确实有效,所以我知道一切正常。此外,将 privateKey 更改为 privatekey(全部小写)会导致属性错误,因此我知道该属性存在并且在某种程度上被识别。

而且我知道 ssh 密钥本身正在工作:

  % ssh -i ~/.ssh/mavenKey maven@maven.company.com ls /
  [ no errors, output trimmed ]

但是当我运行它时,会提示我输入共享用户 ID 的密码:

  % gradle uploadArchives
  [... stuff ...]
  Using SSH key: /homes/klash/.ssh/mavenKey
  Password for maven@evomaven.englab.juniper.net: 

如您所见,它不会提示输入密钥的密码。

4

1 回答 1

0

确保您的私钥不需要密码。
您可以在不提示输入密码的情况下使用 ssh maven@evomaven.englab.juniper.net 从命令行访问远程吗?
如果不使用 ssh-copy-id 将您的公钥发送到服务器。

于 2014-04-15T08:55:55.830 回答