2010-08-30 3 views
2

je voudrais utiliser une tâche sshexec dans Apache Ant sous Mac OS X comme ceci:tâche de fourmis Apache et un problème de mot de passe sous Mac OS X

<!-- ... --> 
<target name="uname"> 
    <sshexec host="${host}" keyfile="${user.home}/.ssh/id_rsa" username="${user}" command="uname -ar" /> 
</target> 
<!-- ... --> 

Mais je ne reçois une erreur « Auth annuler "pour « fourmi uname »:

BUILD FAILED 
/build.xml:78: com.jcraft.jsch.JSchException: Auth cancel 
    at com.jcraft.jsch.Session.connect(Session.java:460) 
    at com.jcraft.jsch.Session.connect(Session.java:154) 
    at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:223) 
    at org.apache.tools.ant.taskdefs.optional.ssh.SSHExec.execute(SSHExec.java:190) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
    at org.apache.tools.ant.Task.perform(Task.java:348) 
    at org.apache.tools.ant.Target.execute(Target.java:390) 
    at org.apache.tools.ant.Target.performTasks(Target.java:411) 
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397) 
    at org.apache.tools.ant.Project.executeTarget(Project.java:1366) 
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1249) 
    at org.apache.tools.ant.Main.runBuild(Main.java:801) 
    at org.apache.tools.ant.Main.startAnt(Main.java:218) 
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 

Après avoir joué, je viens d'apprendre que je dois ajouter mon mot de passe comme paramètre « passphrase » à la tâche:

<!-- ... --> 
<target name="uname"> 
    <sshexec host="${host}" keyfile="${user.home}/.ssh/id_rsa" passphrase="my.secret.passpgrase" username="${user}" command="uname -ar" /> 
</target> 
<!-- ... --> 

Mais j'ai parfaitement configuré Mac OS X avec une intégration de travail pour la gestion des phrases secrètes à mon trousseau. Donc je n'ai pas besoin d'entrer la phrase secrète à chaque fois.

Y a-t-il un moyen pour que la tâche sshexec et aussi la tâche scp puissent utiliser les phrases stockées dans mon trousseau?

Répondre

2

Je viens de me lancer moi-même là-dedans et d'avoir une solution alternative: retirez votre mot de passe de votre paire de clés. Il semble que jsch ne puisse pas accéder à la chaîne de clé locale, vous devez donc soit placer la phrase secrète dans la tâche ant, soit la retirer des clés. Comment l'enlever:

prompt% ssh-keygen -p 
Enter file in which the key is (~/.ssh/id_rsa): <just hit return if the file printed before the prompt is your key file> 
Enter old passphrase: <your current passphrase> 
Key has comment '~/.ssh/id_rsa' 
Enter new passphrase (empty for no passphrase): <hit return to remove the passphrase> 
Enter same passphrase again: <hit return again> 
Your identification has been saved with the new passphrase.