Можно ли настроить плагин Maven Wagon для использования закрытого ключа для ssh/scp? Все, что я пробовал, по-прежнему заставляет maven запрашивать у меня пароль, когда дело доходит до scp-ing.
Может ли плагин Maven Wagon использовать закрытый ключ для scp?
Ответы (4)
Вы должны иметь возможность указать путь к закрытому ключу в элементе server в настройках. .xml:
Репозитории для загрузки и развертывания определяются элементами
repositories
иdistributionManagement
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 пытается подключиться.
- имя пользователя, пароль: эти элементы отображаются в виде пары, обозначающей логин и пароль, необходимые для аутентификации на этом сервере.
- privateKey, парольная фраза. Как и в предыдущих двух элементах, эта пара указывает путь к закрытому ключу (по умолчанию
${user.home}/.ssh/id_dsa)
) и парольную фразу, если требуется. Элементы парольная фраза и пароль могут в будущем будут выведены наружу, но сейчас они должны быть установлены в текстовом виде в файле settings.xml.- filePermissions, directoryPermissions: при создании файла или каталога репозитория при развертывании используются эти разрешения. Допустимые значения каждого из них — это трехзначное число, соответствующее разрешениям на доступ к файлам *nix, т.е. 664 или 775.
Примечание. Если вы используете закрытый ключ для входа на сервер, убедитесь, что вы опустили элемент
<password>
. В противном случае ключ будет проигнорирован.Шифрование паролей
В транки 2.1.x и 3.0 добавлена новая функция - шифрование пароля сервера и парольной фразы. Подробнее см. на этой странице.
Обратите особое внимание на «примечание»: Если вы используете закрытый ключ для входа на сервер, обязательно опустите элемент <password>
. В противном случае ключ будет проигнорирован. Таким образом, окончательная конфигурация будет близка к:
<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>
Я знаю, что это старая тема, но похоже, что плагин Wagon читает settings.xml (например, имя пользователя), но не использует все настройки. Я не мог заставить его перестать запрашивать имя пользователя/пароль Kerberos во время scp. (Похоже, в конце 2016 года в плагине могли быть изменения, которые повлияли на это.) Просто добавьте этот ответ на случай, если он поможет кому-то другому.
Для меня решение было еще проще: полностью пропустить использование «settings.xml» и просто указать «scpexe» вместо «scp» для протокола (например, в разделе «Управление распределением» pom.xml). Затем используется конфигурация SSH по умолчанию для вашего компьютера (настройки unix в ~/.ssh).
<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
работал как шарм.
- person David Lakatos; 15.05.2019
Сегодня я хотел сделать то же самое в сочетании с 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>
Я предполагаю, что решающее значение имеет блок <configuration>
и особенно настройка <preferredAuthentications>
.
Я нашел необходимую информацию здесь: http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ssh-external.html