我正在使用scp任务,然后在我的ant build.xml中使用sshexec。我从屏幕上的密码字段中获取密码的值。在任务成功完成之前,用户无法检查其密码是否正确。
因此,如果输入的密码不正确,Scp / sshexec是否会重试连接?是否有任何限制连接重试次数的句柄?
答案 0 :(得分:1)
sshexec
和scp
任务使用Java安全通道JSch,请参阅ant manual library dependencies。
我有一个类似的问题,因为JSch尝试在com.jcraft.jsch.JSch类中配置6次身份验证。使用错误密码时,用户帐户被锁定
简单地修改com.jcraft.jsch.JSch类如下:
来自:
config.put("MaxAuthTries", "6");
到:
config.put("MaxAuthTries", "3");
表示JSch只会尝试3次进行身份验证。
- 评论后修改
下载JSch发布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
答案 1 :(得分:1)
此处的解决方案不需要您手动修补和重建JSch库。
为了将重试次数限制为1,只需在Ant脚本的开头或调用script
和scp
任务之前添加以下sshexec
代码段,例如:
<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。