Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让Ant sshexec使用非空密码短语_Java_Ant_Ssh - Fatal编程技术网

Java 如何让Ant sshexec使用非空密码短语

Java 如何让Ant sshexec使用非空密码短语,java,ant,ssh,Java,Ant,Ssh,如何将Ant的sshexec任务与配置了密码短语的私钥一起使用 我发现了以下解决方法: 从私钥中删除密码短语(最实用) 将密码短语作为命令行选项传递,例如-Dpass=mypass(不安全) 在Ant作业定义文件中硬编码密码短语(最差) 这些对我来说都不是一个好的选择,但第一个是可以接受的 将私钥加载到pageant中似乎没有任何帮助。从其他答案来看,Ant似乎正在尝试访问它,但它无法访问,于是又回到了密码身份验证,密码身份验证失败: com.jcraft.jsch.JSchExceptio

如何将Ant的
sshexec
任务与配置了密码短语的私钥一起使用

我发现了以下解决方法:

  • 从私钥中删除密码短语(最实用)
  • 将密码短语作为命令行选项传递,例如
    -Dpass=mypass
    (不安全)
  • 在Ant作业定义文件中硬编码密码短语(最差)
这些对我来说都不是一个好的选择,但第一个是可以接受的

将私钥加载到
pageant
中似乎没有任何帮助。从其他答案来看,Ant似乎正在尝试访问它,但它无法访问,于是又回到了密码身份验证,密码身份验证失败:

com.jcraft.jsch.JSchException: Auth cancel
    at com.jcraft.jsch.Session.connect(Session.java:490)
    at com.jcraft.jsch.Session.connect(Session.java:162)
... (rest of the stack trace omitted)
另一个常见症状是未安装无限强度JCE时,错误如下:

com.jcraft.jsch.JSchException: The cipher 'aes256-cbc' is required, but it is not available.
    at com.jcraft.jsch.KeyPair.loadPPK(KeyPair.java:942)
    at com.jcraft.jsch.KeyPair.load(KeyPair.java:515)
... (rest of the stack trace omitted)

回到我的问题,如何使其正常工作?使用带有密码短语的私钥,而不在任何地方硬编码或在命令行中输入?最好使用
pageant
,在运行Ant任务之前,我可以在这里输入我的密码短语并存储私钥。

如果您从命令行运行Ant文件,您可以让它请求您的密码短语,而不是硬编码。重要的部分是提示输入密码短语,将其存储在属性中,并在passphrase参数中引用该属性

  <target name="copy">    
    <input message="Enter passphrase for keyfile:" addproperty="the.password">
        <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
    </input>
    <upload-files host="the.host" />
  </target>

  <macrodef name="upload-files">
    <attribute name="host" />
    <sequential>
      <scp file="${the.file}"
           todir="@{host}:directoryname/${filename}"
           keyfile="${key.file}" passphrase="${the.password}" verbose="true"/>      
    </sequential>
  </macrodef>


您找到解决方案了吗?目前我正在使用“从私钥中删除密码短语”,但我正在寻找解决方案,如果scp/sshexec可以与
pageant
@Chaucheyang nope一起使用,则尚未找到。我会尽快把它贴在这里。现在这不是一个紧迫的问题。