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

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

Ответы [ 3 ]

16 голосов
/ 29 апреля 2010

Вы должны иметь возможность указать путь к закрытому ключу в элементе server в файле settings.xml:

Репозитории для скачивания и развертывание определяются repositories и distributionManagement элементов ПОМ. Тем не менее, определенные настройки такие как имя пользователя и пароль должны не распространяться вместе с 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 , passphrase : Как и предыдущие два элемента, эта пара указывает путь на закрытый ключ (по умолчанию ${user.home}/.ssh/id_dsa) и пароль, если требуется. элементы пароля и пароля могут быть экстернализованным в будущем, но для теперь они должны быть установлены в виде простого текста в файл settings.xml.
  • filePermissions , directoryPermissions : когда файл или каталог репозитория созданные при развертывании, это разрешения на использование. Правовые ценности каждый номер состоит из трех цифр соответствующий * nix файлу разрешения, т.е. 664 или 775.

Примечание. Если вы используете закрытый ключ для войдите на сервер, убедитесь, что вы пропустите элемент <password>. В противном случае ключ будет игнорироваться.

Шифрование пароля

Новая функция - пароль сервера и было добавлено шифрование парольной фразы до 2.1.х и 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>
1 голос
/ 16 января 2018

Я знаю, что это старая ветка, но похоже, что плагин Wagon читает settings.xml (например, имя пользователя), но не использует все настройки. Я не мог заставить его перестать спрашивать имя пользователя / пароль Kerberos во время scp. (Похоже, что в конце 2016 года в плагин могли быть внесены изменения, влияющие на это.) Просто добавьте этот ответ, если он кому-то поможет.

Для меня решение было еще проще: полностью пропустить, используя «settings.xml» и просто укажите «scpexe» вместо «scp» для протокола (как в разделе distributionManagement файла 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>
1 голос
/ 29 апреля 2010

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

...