RE: How to set up SCM/CVS/Maven integration with public key authentication (need help!)?

2009-06-15 Thread Matt Brown
For anyone who runs into this problem in the future:

After downloading the scm plugin source, I discovered that the plugin is using 
an empty string for the passphrase when authenticating with a public key.

To tell the scm/CVS plugin the correct passphrase to use, you need to set a 
System property for the key maven.scm.cvs.java.ssh.passphrase, i.e.

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


A little disappointing that the system properties the CVS/SCM plugin uses 
aren't mentioned in the documentation for the plugin.

 

-Original Message-
From: Matt Brown [mailto:matt.br...@citrixonline.com] 
Sent: Friday, June 12, 2009 12:14 PM
To: scm-us...@maven.apache.org
Subject: How to set up SCM/CVS/Maven integration with public key authentication 
(need help!)?

I have a scm section in a POM that looks something like this:
 
scm

connectionscm:cvs:ext:myhostname:/cvsroot/repo:module_name/connection
/scm


I typically use publickey auth to authentication against this cvs server, 
although it should accept my password as well.

When I attempt to run 'mvn scm:update', 'mvn release:prepare', or any Maven 
goal that involves connecting to this scm, I get the following failure:

[INFO] Executing: cmd.exe /X /C cvs -z3 -f -q update -d
[INFO] Working directory: C:\Documents and 
Settings\matt.brown\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)
(lots more of the stacktrace)


And further down in the 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)

Followed by:

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



I'm running this on a Windows machine, with no cvs executable on the PATH. I do 
have my public key available under $HOME/.ssh, but it doesn't seem as if 
cvs/maven/scm is loading it here - as I'm not asked for the keyphrase for it.

So, I have a few questions:

1. How do I properly tell maven when using scm where my public key resides? Do 
I need to do it explicitly?
2. From the stacktrace, does it look as if this is even the correct error - or 
is something else going on? I can see traffic exchanged between my machine and 
the CVS host when I run this command if I use wireshark, so I know some sort of 
communication is going on.

Thanks

How to set up SCM/CVS/Maven integration with public key authentication (need help!)?

2009-06-12 Thread Matt Brown
I have a scm section in a POM that looks something like this:
 
scm

connectionscm:cvs:ext:myhostname:/cvsroot/repo:module_name/connection
/scm


I typically use publickey auth to authentication against this cvs server, 
although it should accept my password as well.

When I attempt to run 'mvn scm:update', 'mvn release:prepare', or any Maven 
goal that involves connecting to this scm, I get the following failure:

[INFO] Executing: cmd.exe /X /C cvs -z3 -f -q update -d
[INFO] Working directory: C:\Documents and 
Settings\matt.brown\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)
(lots more of the stacktrace)


And further down in the 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)

Followed by:

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



I'm running this on a Windows machine, with no cvs executable on the PATH. I do 
have my public key available under $HOME/.ssh, but it doesn't seem as if 
cvs/maven/scm is loading it here - as I'm not asked for the keyphrase for it.

So, I have a few questions:

1. How do I properly tell maven when using scm where my public key resides? Do 
I need to do it explicitly?
2. From the stacktrace, does it look as if this is even the correct error - or 
is something else going on? I can see traffic exchanged between my machine and 
the CVS host when I run this command if I use wireshark, so I know some sort of 
communication is going on.

Thanks