ANT SSHEXEC任务使用密钥文件的问题

时间:2012-08-02 15:43:43

标签: ant ssh automation build-automation

我遇到了SSHEXEC ant任务的问题。

我正在尝试连接到远程主机并执行命令。

我正在尝试使用“keyfile”,所以我不需要使用user / pass并遇到问题。

我可以将其连接起来,但会收到提示:

[sshexec]连接到$ HOST:22

[sshexec] Kerberos用户名[$ Local_USER]:

[sshexec] $ Local_USER的Kerberos密码:

现在,如果我只是在每次提示时点击返回,它会继续并执行命令。

我正在使用此方法进行自动化,因此如果您需要进行交互,则会失败。

这是ANT语法:

<target name="explode" depends="deploy" description="Creating build on Deployment Server">
      <sshexec host="${host}"
             username="${user}"
             keyfile="c:\paul\testkey"
             trust="true"
             command="${bin}/createBuild.sh"/>
</target>

Ant版本 - 1.8.3 Jsch版本 - jsch-0.1.42(也尝试过jsch-0.1.29)

如果我做错了什么,有人可以提供帮助或建议吗?

提前致谢。

4 个答案:

答案 0 :(得分:2)

这里的问题在于Java 7。

在JAVA 7中,他们已将Kerberos引入java.security,因此导致问题在继续之前提示输入kerberos用户/密码。

我已经通过降级到Java 1.6解决了这个问题。

我仍在研究1.7版Java的修复程序 - 可能需要进一步配置java的kerberos conf文件。

答案 1 :(得分:2)

你可以像Cambolie建议的那样降级到Java 1.6,或者你可以添加-noinput来解决这个问题。

例如:

ant -noinput [some_target]

答案 2 :(得分:2)

此问题现已在最新版本的Ant(1.9.1)和Jsch(0.1.50)中得到解决。

Apache有一个bug report,表明它已于2013年1月修复。

答案 3 :(得分:0)

这可能是远程端的配置错误。它当然不应该要求用户名。和你的系统管理员谈谈这件事。我也担心Kerberos,因为这与SSH完全无关。

还要确保公钥已安装在用户的帐户中。