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