invite de mot de passe répété avec Maven Déployez-fichier dans le référentiel scp

StackOverflow https://stackoverflow.com/questions/3626525

  •  26-09-2019
  •  | 
  •  

Question

Je suis en train de déployer un artefact à un dépôt distant accessible via scp et un problème avec les invites de mot de passe répétés. Mon settings.xml contient ce fragment:

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

Les regards d'interaction en ligne de commande comme ceci:

$ 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] ------------------------------------------------------------------------

Il y a plusieurs problèmes ici:

  1. Je suis invité à entrer un mot de passe, même si elle est est spécifiée dans le settings.xml
  2. Le mot de passe est en écho sur la console
  3. Il ne se rappelle pas le mot de passe et la place me demande 4 fois.

Comment puis-je configurer Maven pour qu'il utilise soit un mot de passe ou settings.xml me demande une fois sans écho mon mot de passe à l'écran?

Modifier C'était sur Linux Ubuntu, un collegue vient reproduire le même problème sous Windows XP. Comme le montage du référentiel vers un chemin d'accès local n'est pas une option sur Windows, je suis toujours à la recherche d'une solution.

Était-ce utile?

La solution 4

Nous avons depuis installé Nexus comme un gestionnaire de référentiel et utilisent l'interface Web pour télécharger des pots tiers.

Autres conseils

J'ai trouvé ce qui suit sur la liste des utilisateurs de Maven:

sshd sur le serveur utilisé PasswordAuthentication no. Après le passage à yes ma config Maven fonctionne très bien.

Avez-vous défini soit repositoryId dans votre pom utiliser l'entrée de serveur correct de la settings.xml, la cause il semble que vous ne définissez pas il utilise l'id:-dépôt distant. ou avez-vous changé le settings.xml en conséquence.

Pour contourner ce problème, je suis actuellement le montage dépôt distant en utilisant sshfs, puis en utilisant une URL de fichier dans la commande 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/

Configuration du serveur dans le fichier settings.xml n'est pas nécessaire dans ce cas, l'repositoryId n'a pas besoin d'être spécifié sur la ligne de commande et je peux utiliser autocomplétion shell sur l'URL du fichier.

Je serais toujours intéressé si quelqu'un peut reproduire le problème ou suggérer une solution en utilisant des normes Maven.

Je n'ai pas une solution exacte, mais au moins les travaux suivants:

Créer une entrée de serveur dans le fichier ~ / .m2 / settings.xml:

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

Effectuer Deploy ou déployer: Déployez-fichier comme suit:

mvn deploy -DrepositoryId=example-dist

Il vous sera demandé le mot de passe pour le nom d'utilisateur fourni -. Le mot de passe dans le settings.xml est ignoré

Si vous ne voulez pas fournir les mots de passe à chaque fois, vous pouvez le faire en a généré une clé SSH en utilisant ssh-keygen. La clé publique générée vous devrez stocker dans les fichiers authorized_keys sur le serveur de distribution (pour une meilleure explication, voir plusieurs tutoriels sur le web ou la page de manuel).

Ce bug semble lié. http://jira.codehaus.org/browse/WAGON-323 Im reçois le message « interactif clavier requis, le mot de passe fourni est ignoré » - même avec wagon-ssh-2.4. Essayé de jeu <interactiveMode>false</interactiveMode> mais échoue auth tout de suite.

par @ réponse de Gerbrand, vous pouvez ignorer fournir des informations d'identification de l'utilisateur avec des clés ssh. Les étapes sont les suivantes:

  1. Si vous ne disposez pas encore, générer une clé privée / publique paire avec ssh-keygen. Disons que vous stocker la clé privée dans /home/user/.ssh/id_rsa

  2. Copiez la clé publique sur le serveur de destination avec ssh-copy-id -i /home/user/.ssh/id_rsa USER@serverhostname

  3. Changez votre settings.xml à utiliser vos clés au lieu de mot de passe

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

La prochaine fois que vous devez vous connecter au serveur via Maven, aucun mot de passe vous sera demandé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top