Повторный запрос пароля с Maven deploy-файл в хранилище scp - PullRequest
3 голосов
/ 02 сентября 2010

Я пытаюсь развернуть артефакт в удаленном хранилище, доступном через scp, и у меня проблема с повторными запросами пароля. Мой файл settings.xml содержит этот фрагмент:

<servers>
    <server>
        <id>example.com</id>
        <username>myusername</username>
        <password>mypassword</password>
        <filePermissions>664</filePermissions>
        <directoryPermissions>775</directoryPermissions>
        <configuration>
        </configuration>
    </server>
</servers>

Взаимодействие командной строки выглядит так:

$ mvn deploy:deploy-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.1.0 -DrepositoryId=example.com -Durl=scp://example.com/maven2/
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'deploy'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [deploy:deploy-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [deploy:deploy-file {execution: default-cli}]
Keyboard interactive required, supplied password is ignored
Password: : mypassword
Uploading: scp://example.com/maven2//com/oracle/ojdbc6/11.2.0.1.0/ojdbc6-11.2.0.1.0.jar
2061K uploaded  (ojdbc6-11.2.0.1.0.jar)
[INFO] Retrieving previous metadata from example.com
Keyboard interactive required, supplied password is ignored
Password: : mypassword
[INFO] repository metadata for: 'artifact com.oracle:ojdbc6' could not be found on repository: example.com, so will be created
[INFO] Uploading repository metadata for: 'artifact com.oracle:ojdbc6'
Keyboard interactive required, supplied password is ignored
Password: : mypassword
[INFO] Uploading project information for ojdbc6 11.2.0.1.0
Keyboard interactive required, supplied password is ignored
Password: : mypassword
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30 seconds
[INFO] Finished at: Thu Sep 02 13:03:33 CEST 2010
[INFO] Final Memory: 5M/90M
[INFO] ------------------------------------------------------------------------

Здесь есть несколько проблем:

  1. У меня запрашивается пароль, хотя он указан в settings.xml
  2. Пароль возвращается на консоль
  3. Он не запоминает пароль и вместо этого спрашивает меня 4 раза.

Как настроить maven таким образом, чтобы он либо использовал пароль из settings.xml, либо один раз спросил меня, не выводя мой пароль на экран?

Редактировать: Это было на Ubuntu Linux, коллега только что воспроизвел ту же проблему на Windows XP. Поскольку монтирование репозитория в локальный путь в Windows недоступно, я все еще ищу решение.

Ответы [ 7 ]

3 голосов
/ 31 октября 2012

Я обнаружил следующее в списке пользователей maven:

sshd на сервере использовал PasswordAuthentication no.После переключения на yes мой maven config работает нормально.

0 голосов
/ 17 августа 2018

Согласно ответу @ Gerbrand, вы можете пропустить предоставление учетных данных пользователя с помощью ключей ssh.Шаги следующие:

  1. Если у вас его еще нет, сгенерируйте пару секретных / открытых ключей с помощью ssh-keygen.Допустим, вы храните закрытый ключ в /home/user/.ssh/id_rsa

  2. Скопируйте открытый ключ на целевой сервер с помощью ssh-copy-id -i /home/user/.ssh/id_rsa USER@serverhostname

  3. Измените settings.xml чтобы использовать ключи вместо пароля

    <server>
        <id>serverhostname</id>
        <username>USER</username>
        <privateKey>${user.home}/.ssh/id_rsa</privateKey>
        <!-- Note there is no password tag specified -->
    </server>
    

При следующем входе на сервер через Maven пароль запрашиваться не будет.

0 голосов
/ 29 мая 2013

Эта ошибка кажется связанной.http://jira.codehaus.org/browse/WAGON-323 Я получаю сообщение "Требуется интерактивная клавиатура, предоставленный пароль игнорируется" - даже с wagon-ssh-2.4.Пытался установить <interactiveMode>false</interactiveMode>, но сразу же аутентификация не удалась.

0 голосов
/ 08 февраля 2011

С тех пор мы установили Nexus в качестве менеджера хранилища и используем веб-интерфейс для загрузки файлов сторонних производителей.

0 голосов
/ 08 октября 2010

У меня нет точного решения, но по крайней мере следующие работы:

Создать запись сервера в файле ~ / .m2 / settings.xml:

<server>
  <id>example-dist</id>
  <username>myusername</username>
  <password>ignored</password>
</server>

Выполните развертывание или развертывание: файл развертывания следующим образом:

mvn deploy -DrepositoryId=example-dist

Вам будет предложено ввести пароль для предоставленного имени пользователя - пароль в файле settings.xml игнорируется.

Если вы не хотите каждый раз вводить пароли, вы можете сделать это, сгенерировав ключ ssh с помощью ssh-keygen. Сгенерированный открытый ключ, который вы должны будете хранить в файлах authorized_keys на сервере распространения (более подробное описание см. В нескольких руководствах в Интернете или на странице руководства).

0 голосов
/ 04 сентября 2010

В качестве обходного пути я в настоящее время монтирую удаленный репозиторий с помощью sshfs, а затем использую URL-адрес файла в команде maven:

$ sudo adduser jh fuse
$ sudo mkdir -p /mnt/example.com/maven2
$ sudo chown -R jh:jh /mnt/example.com
$ sshfs username@example.com:/maven2 /mnt/example.com/maven2
$ mvn deploy:deploy-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.1.0 -Durl=file:///mnt/example.com/maven2/repository/

Настройка сервера в файле settings.xml в этом случае не требуется, repositoryId не нужно указывать в командной строке, и я могу использовать автозаполнение оболочки в URL-адресе файла.

Мне все равно было бы интересно, если кто-нибудь сможет воспроизвести проблему или предложить решение с использованием стандартов maven.

0 голосов
/ 02 сентября 2010

Вы установили либо repositoryId в вашем pom, чтобы использовать правильную запись сервера из файла settings.xml, потому что похоже, что вы не установили это, поэтому он использует id: remote-repository. или вы соответственно изменили файл settings.xml.

...