我遇到了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)
如果我做错了什么,有人可以提供帮助或建议吗?
提前致谢。
保
答案 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完全无关。
还要确保公钥已安装在用户的帐户中。