可以将Maven Wagon插件配置为使用ssh / scp的私钥吗?我尝试的所有东西仍然留给maven,当它到达scp-ing时,我会要求我输入密码。
答案 0 :(得分:16)
您应该能够在settings.xml中的server元素中指定私钥的路径:
下载和存储库 部署由。定义
repositories
和distributionManagement
元素 POM。但是,某些设置 如用户名和密码应该 不与...一起分发 pom.xml中。这类信息 应该存在于构建服务器上 settings.xml。<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <servers> <server> <id>server001</id> <username>my_login</username> <password>my_password</password> <privateKey>${user.home}/.ssh/id_dsa</privateKey> <passphrase>some_passphrase</passphrase> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> <configuration></configuration> </server> </servers> ... </settings>
- id :这是。的ID 服务器(不是用户登录为) 匹配的id元素 Maven尝试的存储库/镜像 连接到。
- 用户名,密码:这些元素显示为一对表示登录名和密码 需要对此进行身份验证 服务器
- 的专用密钥下, 密码:与前两个元素一样,此对指定路径 私钥(默认为
${user.home}/.ssh/id_dsa)
和a 密码短语,如果需要的话。该 密码和密码元素可以 将来被外化,但是 现在他们必须在中设置纯文本 settings.xml文件。- filePermissions , directoryPermissions :当存储库文件或目录是 在部署时创建,这些是 使用权限。法律价值观 每个是三位数 对应* nix文件 权限,即。 664或775。
注意:如果您使用私钥 登录服务器,确保你 省略
<password>
元素。 否则,密钥将被忽略。密码加密
新功能 - 服务器密码和 密码加密已添加 到2.1.x和3.0中继。查看详细信息 在this page。
特别注意“注释”:如果使用私钥登录服务器,请确保省略<password>
元素。否则,密钥将被忽略。因此最终配置将接近:
<settings>
...
<servers>
<server>
<id>ssh-repository</id>
<username>your username in the remote system</username>
<privateKey>/path/to/your/private/key</privateKey>
<passphrase>sUp3rStr0ngP4s5wOrD</passphrase><!-- if required -->
<configuration>
...
</configuration>
</server>
</servers>
...
</settings>
答案 1 :(得分:2)
我今天想结合 maven-site-plugin (3.9.1) 做同样的事情,但也遇到了一些障碍(特别是 wagon-ssh< /em> 插件坚持要求我提供我的 Kerberos 用户名和密码)。 wagon-ssh-3.4.3 最终对我有用:
<!-- add scp support for mvn site:deploy -->
<dependency>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>3.4.3</version>
</dependency>
在settings.xml中:
<server>
<id>ssh-repository</id>
<username>pridkdev</username>
<privateKey>${user.home}/.ssh/pridkdev.ppk</privateKey>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration>
<interactive>false</interactive>
<strictHostKeyChecking>no</strictHostKeyChecking>
<preferredAuthentications>publickey</preferredAuthentications>
</configuration>
</server>
我想最重要的是 <configuration>
块,尤其是 <preferredAuthentications>
设置。
答案 2 :(得分:1)
答案 3 :(得分:1)
我知道这是一个旧线程,但看起来Wagon插件正在读取settings.xml(例如用户名),但没有使用所有设置。我无法让它在scp期间停止询问Kerberos用户名/密码。 (看起来2016年晚些时候插件可能会发生变化而影响到这一点。) 只需添加此答案,以防其他人帮助。
对我来说,解决方案更简单:完全跳过使用&#39; settings.xml&#39; 并简单地指定&#39; scpexe&#39;而不是&#39; scp&#39;对于协议(如pom.xml的distributionManagement部分)。然后使用您机器的默认SSH配置(〜/ .ssh下的unix设置)。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>upload-to-server</id>
<phase>deploy</phase>
<goals><goal>upload-single</goal></goals>
<configuration>
<fromFile>file-to-upload</fromfile>
<url>scpexe://username@serverName/dirname-to-copy-to
<toFile>file-to-upload</toFile>
</configuration>
</execution>
</executions>
</plugin>