【问题标题】:Can Maven Wagon plugin use a private key for scp?Maven Wagon 插件可以为 scp 使用私钥吗?
【发布时间】:2011-02-13 13:49:48
【问题描述】:

可以将 Maven Wagon 插件配置为使用 ssh/scp 的私钥吗?我尝试过的一切仍然让 maven 在 scp-ing 的时候向我询问密码。

【问题讨论】:

    标签: maven-2 ssh ssh-keys


    【解决方案1】:

    您应该能够在 settings.xml 的 server 元素中指定私钥的路径:

    下载和存储库 部署由定义 repositoriesdistributionManagement 元素 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 元素 Maven 尝试的存储库/镜像 连接到。
    • 用户名密码:这些元素显示为一对,表示登录名和密码 需要对此进行身份验证 服务器。
    • 私钥passphrase:与前两个元素一样,这对指定了一个路径 到私钥(默认为 ${user.home}/.ssh/id_dsa) 和一个 密码(如果需要)。这 密码短语和密码元素可能 在未来被外部化,但对于 现在它们必须在 settings.xml 文件。
    • filePermissionsdirectoryPermissions:当存储库文件或目录被 在部署时创建,这些是 使用权限。法律价值 每个是一个三位数字 对应 *nix 文件 权限,即。 664 或 775。

    注意:如果您使用私钥 登录到服务器,请确保您 省略 &lt;password&gt; 元素。 否则,该键将被忽略。

    密码加密

    一项新功能 - 服务器密码和 添加了密码短语加密 到 2.1.x 和 3.0 中继线。查看详细信息 在this page.

    特别注意“注意”:如果您使用私钥登录服务器,请确保省略&lt;password&gt; 元素。否则,key会被忽略。所以最终的配置会接近:

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

    【讨论】:

      【解决方案2】:

      我知道这是一个旧线程,但看起来 Wagon 插件正在读取 settings.xml(例如用户名)但没有使用所有设置。我无法让它在 scp 期间停止询问 Kerberos 用户名/密码。 (看起来可能在 2016 年末对插件进行了更改,这会影响到这一点。) 只需添加此答案以防对其他人有帮助。

      对我来说,解决方案更简单:完全跳过使用“settings.xml” 并简单地为协议指定'scpexe'而不是'scp'(如在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>
      

      【讨论】:

      • 救命稻草回答!尝试使用org.apache.maven.wagon:wagon-ssh 进行私钥身份验证,但未成功。 org.apache.maven.wagon:wagon-ssh-external 工作就像一个魅力。
      【解决方案3】:

      我今天想与 maven-site-plugin (3.9.1) 一起做同样的事情,并且还遇到了一些障碍(特别是 wagon-ssh 插件坚持要求我提供我的 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>
      

      我想最重要的是&lt;configuration&gt; 块,尤其是&lt;preferredAuthentications&gt; 设置。

      【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 2011-05-20
          • 1970-01-01
          • 2012-01-09
          • 2016-07-30
          • 1970-01-01
          • 2022-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多