Maven不会使用公钥来部署

时间:2010-05-09 01:32:56

标签: java maven-2 ssh public-key

我正在使用SSH将我的Java工件部署到服务器。我设置了密钥,以便我可以交互式SSH连接到服务器而无需密码,但是当我尝试运行“mvn deploy”或“mvn release:perform”命令时,它会挂起(在我的位置)假设是密码提示)。

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

2 个答案:

答案 0 :(得分:9)

您确定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>

答案 1 :(得分:5)

在您的分发管理部分,请尝试在您的网址中使用“scpexe://”而不是“scp://”。

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