如何通过sshexec
配置了密码的私钥使用 Ant 的任务?
我找到了以下解决方法:
- 从私钥中删除密码(最实用)
- 例如,将密码作为命令行选项传递
-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)
另一个常见的症状是未安装 Unlimited Strength 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 任务之前存储私钥。