为什么Maven在使用scp部署时不使用我的私钥?

时间:2016-04-09 12:38:56

标签: maven scp

我正在使用Maven 3部署到我们的集群。在我的 settings.xml 中设置了私钥,并在 pom.xml 中设置了存储库。目前一切正常,只是我打电话给mvn clean deploy时,我被要求输入密码。如果我使用<password>pw</password>代替<privateKey>path</privateKey>它正在运行,但当然这不是我想要使用的。

的settings.xml

<server>
    <id>company_cluster</id>
    <username>user</username>
    <privateKey>/home/user/.ssh/user</privateKey>
</server>

的pom.xml

<build>
    <!-- ... -->
    <extensions>
        <!-- Enabling the use of SSH -->
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>2.4</version>
        </extension>
    </extensions>

</build>

<distributionManagement>
    <repository>
        <id>company_cluster</id>
        <url>scp://client.hadoop.company.at/home/user/deploy/</url>
    </repository>
</distributionManagement>

我在本地计算机上生成了ssh密钥,然后使用

ssh-copy-id user@client.hadoop.company.at

将其添加到授权密钥。

2 个答案:

答案 0 :(得分:0)

这是一个古老的问题,但是我在非常相似的问题上花费了足够的时间,认为发布答案是值得的。您不能在 settings.xml 文件的username节点中同时提供privateKeyserver。因此,在 settings.xml 文件中,该文件应如下所示:

  <server>
    <id>company_cluster</id>
    <privateKey>/home/user/.ssh/user</privateKey>
  </server>

答案 1 :(得分:0)

mvn -U clean install -D skipTests

导致错误信息:

Could not transfer artifact ... from/to ...-repository (scp://.../repo/releases/): Cannot connect. Reason: invalid privatekey: [...-> [Help 1]

我找到了这个链接 https://help.mulesoft.com/s/article/Issue-with-key-based-authentication-while-connecting-to-SFTP-server

并检查我新生成的密钥如下:

-----BEGIN OPENSSH PRIVATE KEY-----
...

在我旧的(工作)环境中,它是:

head -2 id_rsa
-----BEGIN RSA PRIVATE KEY-----
...

所以上面链接的提示是使用:

ssh-keygen -t rsa -b 4096 -m PEM

这意味着创建一个新密钥 - 我已经将带有 ssh-copy-id 的密钥部署到相当多的服务器上......

Openssh Private Key to RSA Private Key 处,如果找到密钥转换的过程。

ssh-keygen -p -N "" -m pem -f  id_rsa

将格式更改为 RSA

head -1 id_rsa
-----BEGIN RSA PRIVATE KEY-----

并导致 mvn 错误消息消失。