Maven Wagon插件可以使用私钥scp吗?

时间:2010-04-28 22:08:28

标签: maven-2 ssh ssh-keys

可以将Maven Wagon插件配置为使用ssh / scp的私钥吗?我尝试的所有东西仍然留给maven,当它到达scp-ing时,我会要求我输入密码。

4 个答案:

答案 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>