Может ли плагин Maven Wagon использовать закрытый ключ для scp?

Можно ли настроить плагин Maven Wagon для использования закрытого ключа для ssh/scp? Все, что я пробовал, по-прежнему заставляет maven запрашивать у меня пароль, когда дело доходит до scp-ing.


person Ben Burleson    schedule 28.04.2010    source источник


Ответы (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>
person Pascal Thivent    schedule 28.04.2010

Я знаю, что это старая тема, но похоже, что плагин 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>
person lisarush    schedule 16.01.2018
comment
Спасительный ответ! Попытка авторизации с закрытым ключом с помощью 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>.

person Stefan Zobel    schedule 12.04.2021

Я нашел необходимую информацию здесь: http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ssh-external.html

person Ben Burleson    schedule 28.04.2010