Maven не будет использовать открытый ключ для развертывания
Я использую SSH для развертывания своих артефактов Java на сервере. У меня есть ключи, настроенные так, что я могу взаимодействовать с SSH на сервере, не требуя пароля, но когда я пытаюсь запустить команды "mvn deploy
" или "mvn release:perform
", он зависает (по тому, что я предполагаю, это пароль строки).
Мой ~/.m2/settings.xml
файл содержит имя пользователя для сервера (потому что он отличается от моего локального имени пользователя) и ссылается на id
сервера, для которого требуется другой пользователь.
Ответы
Ответ 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>
Ответ 2
В вашем разделе distributionManagement попробуйте использовать "scpexe://" в вашем url вместо "scp://".
Это вызывает стандартную программу scp (при условии, что она находится на вашем пути) вместо использования Java-реализации scp, встроенной в Maven. Стандартный scp использует ssh-agent (который в Ubuntu запускается автоматически при входе через GDM) для аутентификации с открытым ключом.