Maven не будет использовать открытый ключ для развертывания

Я использую SSH для развертывания своих артефактов Java на сервере. У меня есть ключи, настроенные так, что я могу взаимодействовать с SSH на сервере, не требуя пароля, но когда я пытаюсь запустить команды "mvn deploy" или "mvn release:perform", он зависает (по тому, что я предполагаю, это пароль строки).

Мой ~/.m2/settings.xml файл содержит имя пользователя для сервера (потому что он отличается от моего локального имени пользователя) и ссылается на id сервера, для которого требуется другой пользователь.

Ответ 1

Вы уверены, что ваш settings.xml предоставляет все необходимое? Вы заявили о своем privateKeypassphrase, если необходимо)? Что-то вроде этого:

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

Ответ 2

В вашем разделе distributionManagement попробуйте использовать "scpexe://" в вашем url вместо "scp://".

Это вызывает стандартную программу scp (при условии, что она находится на вашем пути) вместо использования Java-реализации scp, встроенной в Maven. Стандартный scp использует ssh-agent (который в Ubuntu запускается автоматически при входе через GDM) для аутентификации с открытым ключом.