【问题标题】:Maven won't use public key to deployMaven 不会使用公钥来部署
【发布时间】:2011-02-17 06:52:33
【问题描述】:

我正在使用 SSH 将我的 Java 工件部署到服务器。我已经设置了密钥,这样我就可以在不需要密码的情况下以交互方式 SSH 到服务器,但是当我尝试运行“mvn deploy”或“mvn release:perform”命令时,它挂起(我假设是密码提示)。

我的~/.m2/settings.xml 文件包含服务器的用户名(因为它与我的本地用户名不同)并引用需要不同用户的服务器的id。

【问题讨论】:

    标签: java maven-2 ssh public-key


    【解决方案1】:

    您确定您的settings.xml 提供所需的一切吗?您是否声明了您的privateKey(以及必要时的passphrase)?像这样的:

    <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>
          <privateKey>${user.home}/.ssh/id_dsa</privateKey>
          <passphrase>some_passphrase</passphrase> <!-- if required -->
          <filePermissions>664</filePermissions>
          <directoryPermissions>775</directoryPermissions>
          <configuration></configuration>
        </server>
      </servers>
      ...
    </settings>
    

    【讨论】:

    • 我需要 元素。这真是太令人失望了!为什么它不像 mvn 那样从我的 Ubuntu 钥匙串中读取密码?
    【解决方案2】:

    在您的 distributionManagement 部分,尝试在您的 url 中使用“scpexe://”而不是“scp://”。

    这将调用标准 scp 程序(假设它在您的路径上),而不是使用 Maven 中内置的 Java 实现 scp。标准 scp 使用 ssh-agent(在 Ubuntu 中,当您通过 GDM 登录时会自动启动)进行公钥验证。

    【讨论】:

    • 在这种情况下您还需要使用wagon-ssh-external。
    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2014-11-25
    相关资源
    最近更新 更多