我正在使用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
将其添加到授权密钥。
答案 0 :(得分:0)
这是一个古老的问题,但是我在非常相似的问题上花费了足够的时间,认为发布答案是值得的。您不能在 settings.xml 文件的username
节点中同时提供privateKey
和server
。因此,在 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]
并检查我新生成的密钥如下:
-----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 错误消息消失。