【问题标题】:SCP / SSHEXEC - number of connection attemptsSCP / SSHEXEC - 连接尝试次数
【发布时间】:2014-05-01 22:19:12
【问题描述】:

我在我的 ant build.xml 中使用 scp 任务和 sshexec。我从屏幕上的密码字段导出密码值。在任务成功完成之前,用户无法检查其密码是否正确。

结果如果输入的密码不正确,scp / sshexec 是否会重试连接?有没有限制连接重试次数的句柄?

【问题讨论】:

    标签: ant connection scp


    【解决方案1】:

    sshexecscp 任务使用 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 次进行身份验证。

    -- 评论后编辑--

    1. 下载JSch release zip here - 最新版本为0.1.51

    2. 解压

    3. 打开 jsch-0.1.51/src/main/java/com/jcraft/jsch/JSch.java

    4. 换行124
      来自
      config.put("MaxAuthTries", "6");

      config.put("MaxAuthTries", "3");

    5. 保存

    6. 根据您的操作系统运行 jsch-0.1.51/build.bat 或 build.sh

    7. 使用 jsch-0.1.51/dist/lib/jsch-0.1.5.jar

    【讨论】:

    • 首先感谢您的回复! ..但是我如何修补二进制文件..对此相对较新,不知道如何创建补丁。
    • 添加了一些说明 - 请参阅更新的答案。如果你不成功,我可能会邮寄修补过的 jar。
    • 上传的文件 => wikisend.com/download/139984/jsch-0.1.51-patched.jar 文件将在 7 天后可用 MD5 = 2893A131C6775DCA1DB999D1EBADE566
    • 你给我这么详细的说明真是太棒了..非常感谢!!!
    • 我很高兴 - 这就是 stackoverflow.com 的全部内容:-)
    【解决方案2】:

    这是一个不需要您手动修补和重建 JSch 库的解决方案。

    为了将重试次数限制为 1,只需在 Ant 脚本的开头或调用 scpsshexec 任务之前添加以下 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 目标中,它就可以工作,不需要其他任何东西。
    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多