Author: chatellier Date: 2009-05-12 17:00:38 +0000 (Tue, 12 May 2009) New Revision: 2224 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java Log: Recode ssh key generation based on jsch. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java 2009-05-12 16:45:30 UTC (rev 2223) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/actions/VCSAction.java 2009-05-12 17:00:38 UTC (rev 2224) @@ -19,15 +19,17 @@ package fr.ifremer.isisfish.actions; -import com.sshtools.j2ssh.transport.publickey.OpenSSHPublicKeyFormat; -import com.sshtools.j2ssh.transport.publickey.SshKeyGenerator; -import fr.ifremer.isisfish.IsisConfig; import java.io.File; import java.util.Arrays; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.codelutin.util.FileUtil; +import com.jcraft.jsch.JSch; +import com.jcraft.jsch.KeyPair; + +import fr.ifremer.isisfish.IsisConfig; + /** * * @author poussin @@ -50,28 +52,29 @@ public void sshCreateKey(boolean force) throws Exception { File f = config.getSSHPrivateKeyFilePath(); + // check already exist key if (f.exists() && !force) { log.error("the private key already exist " + f + ", use option [force] to overwrite"); return; } - File publicKeyFile = new File(f.getAbsolutePath() + ".pub"); + // bug #1623, le dossier parent n'existe pas - if (publicKeyFile.getParentFile() != null && publicKeyFile.getParentFile().isDirectory()) { - publicKeyFile.mkdirs(); + if (f.getParentFile() != null && f.getParentFile().isDirectory()) { + f.mkdirs(); } - log.info("Generate ssh key to " + f); - SshKeyGenerator.main(new String[]{"-b", "1024", "-t", "rsa", f.getAbsolutePath()}); - - log.info("public key before OpenSsh : " + FileUtil.readAsString(publicKeyFile)); - String openSshPublicKey = - SshKeyGenerator.convertPublicKeyFile(publicKeyFile, - new OpenSSHPublicKeyFormat( - config.getUserName() + - "@forIsisFish 1024-bit rsa")); - - log.info("public key OpenSsh : " + openSshPublicKey); - FileUtil.writeString(new File(publicKeyFile.getAbsolutePath()), openSshPublicKey); + if (log.isInfoEnabled()) { + log.info("Generate ssh key to " + f); + } + JSch jsch=new JSch(); + KeyPair kpair=KeyPair.genKeyPair(jsch, KeyPair.RSA); + //kpair.setPassphrase(passphrase); + kpair.writePrivateKey(f.getAbsolutePath()); + kpair.writePublicKey(f.getAbsolutePath()+".pub", config.getUserName() + "@forIsisFish 1024-bit rsa"); + if (log.isInfoEnabled()) { + log.info("Finger print: "+kpair.getFingerPrint()); + } + kpair.dispose(); } public void vcsUpdate() throws Exception {