【发布时间】:2014-05-01 22:19:12
【问题描述】:
我在我的 ant build.xml 中使用 scp 任务和 sshexec。我从屏幕上的密码字段导出密码值。在任务成功完成之前,用户无法检查其密码是否正确。
结果如果输入的密码不正确,scp / sshexec 是否会重试连接?有没有限制连接重试次数的句柄?
【问题讨论】:
标签: ant connection scp
我在我的 ant build.xml 中使用 scp 任务和 sshexec。我从屏幕上的密码字段导出密码值。在任务成功完成之前,用户无法检查其密码是否正确。
结果如果输入的密码不正确,scp / sshexec 是否会重试连接?有没有限制连接重试次数的句柄?
【问题讨论】:
标签: ant connection scp
sshexec 和 scp 任务使用 Java 安全通道 JSch,请参阅 ant 手册 library dependencies。
我有一个类似的问题,因为 JSch 尝试对 com.jcraft.jsch.JSch 类中配置的 6 次进行身份验证。使用错误密码时,用户帐户被锁定。
只需像这样修补 com.jcraft.jsch.JSch 类:
来自:
config.put("MaxAuthTries", "6");
到:
config.put("MaxAuthTries", "3");
意味着 JSch 只会尝试 3 次进行身份验证。
-- 评论后编辑--
下载JSch release zip here - 最新版本为0.1.51
解压
打开 jsch-0.1.51/src/main/java/com/jcraft/jsch/JSch.java
换行124
来自
config.put("MaxAuthTries", "6");
到
config.put("MaxAuthTries", "3");
保存
根据您的操作系统运行 jsch-0.1.51/build.bat 或 build.sh
使用 jsch-0.1.51/dist/lib/jsch-0.1.5.jar
【讨论】:
这是一个不需要您手动修补和重建 JSch 库的解决方案。
为了将重试次数限制为 1,只需在 Ant 脚本的开头或调用 scp 和 sshexec 任务之前添加以下 script sn -p,例如:
<script language="javascript"> <![CDATA[
com.jcraft.jsch.JSch.setConfig("MaxAuthTries", "1");
]]> </script>
<sshexec host="..." username="..." password="..." command="..."/>
您需要 JSch 0.1.46 或更高版本!我用 Ant 1.9.4 和 JSch 0.1.51 / 0.1.52 进行了测试。
【讨论】:
script 标记放在sshexec 标记上方的您的ant 目标中,它就可以工作,不需要其他任何东西。