Comment configurer Maven pour se connecter avec CVS ​​en utilisant l'authentification par clé publique?

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

Question

J'ai une section dans un POM qui ressemble à ceci:

<scm>
    <connection>scm:cvs:ext:myhostname:/cvsroot/repo:module_name</connection>
</scm>

J'utilise généralement auth publickey à l'authentification sur ce serveur cvs, bien qu'il devrait accepter mon mot de passe ainsi.

Lorsque je tente d'exécuter mvn scm:update, mvn release:prepare, ou tout autre objectif Maven qui consiste à se connecter à ce scm, je reçois l'échec suivant:

[INFO] Executing: cmd.exe /X /C "cvs -z3 -f -q update -d"
[INFO] Working directory: C:\Documents and Settings\matt\workspace\projectname
org.netbeans.lib.cvsclient.connection.AuthenticationException: Cannot authenticate. Reason: Publickey authentication failed.
    at org.apache.maven.scm.provider.cvslib.cvsjava.util.ExtConnection.open(ExtConnection.java:136)
    at org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection.connect(CvsConnection.java:166)
    at org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection.processCommand(CvsConnection.java:498)
    at org.apache.maven.scm.provider.cvslib.cvsjava.command.update.CvsJavaUpdateCommand.executeCvsCommand(CvsJavaUpdateCommand.java:53)
    at org.apache.maven.scm.provider.cvslib.command.update.AbstractCvsUpdateCommand.executeUpdateCommand(AbstractCvsUpdateCommand.java:78)
    at org.apache.maven.scm.command.update.AbstractUpdateCommand.executeCommand(AbstractUpdateCommand.java:63)
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
    at org.apache.maven.scm.provider.cvslib.AbstractCvsScmProvider.executeCommand(AbstractCvsScmProvider.java:750)
    at org.apache.maven.scm.provider.cvslib.AbstractCvsScmProvider.update(AbstractCvsScmProvider.java:348)
    at org.apache.maven.scm.provider.AbstractScmProvider.update(AbstractScmProvider.java:821)
    at org.apache.maven.scm.provider.AbstractScmProvider.update(AbstractScmProvider.java:770)
    at org.apache.maven.scm.manager.AbstractScmManager.update(AbstractScmManager.java:526)
    at org.apache.maven.scm.plugin.UpdateMojo.execute(UpdateMojo.java:89)

(beaucoup plus du stacktrace ....)

Et plus bas dans le stacktrace:

Caused by: java.io.IOException: Decrypted PEM has wrong padding, did you specify the correct password?
    at ch.ethz.ssh2.crypto.PEMDecoder.removePadding(PEMDecoder.java:109)
    at ch.ethz.ssh2.crypto.PEMDecoder.decryptPEM(PEMDecoder.java:286)
    at ch.ethz.ssh2.crypto.PEMDecoder.decode(PEMDecoder.java:319)

Suivi par:

[ERROR] Provider message:
[ERROR] The cvs command failed.
[ERROR] Command output:

Je suis en cela sur une machine Windows, sans cvs exécutable sur le PATH. J'ai ma clé publique disponible sous $HOME/.ssh, mais il ne semble pas comme si cvs / Maven / scm chargement ici - que je ne suis pas demandé la phrase clé pour elle

.

Alors ma question est ... est-il quelque chose de spécial que je dois faire avec Maven ou le fournisseur SMC / CVS pour l'obtenir à reconnaître où ma clé publique est installé, ou comment utiliser réellement? À l'heure actuelle, il ne semble pas que si elle est même utilisée comme je ne suis pas invité à entrer son mot de passe.

Était-ce utile?

La solution

après le débogage cela un peu plus, et télécharger le code source pour le paquet maven-scm-fournisseur cvs, j'ai découvert que la bibliothèque CVS utilisé par ce plugin utilise pour la valeur passphrase la chaîne vide ("") si elle trouve votre clé privée. Pour utiliser le mot de passe correct, la bibliothèque vous attend de définir une propriété du système avec la touche maven.scm.cvs.java.ssh.passphrase nom.

Alors, si je lance mon objectif scm:status comme ceci:

mvn scm:status -Dmaven.scm.cvs.java.ssh.passphrase=<my passphrase>

Je suis en mesure de se connecter à CVS.

Gee - Je souhaite vraiment que cela a été documenté

Autres conseils

I résolu ce problème en exécutant la commande cvs + ssh de connexion de la console avant d'utiliser maven. Cela a ajouté les chiffres magiques à la maison $ / .ssh pour la connexion automatique fonctionne.

Si cela est à cause d'un certificat auto-signé, consultez le InstallCert code sur la façon d'ajouter l'auto-signé cert au client. Ou cette par exemple sur la façon de remplacer la valeur par défaut du code X509 Trust.

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