出于测试目的,我正在自动创建已配置的 EC2 机器。创建/配置是通过 ssh 连接完成的(各种操作系统的逻辑相同)。在 Windows(Windows 2003 Server)上,有预配置了 ssh 的 cygwin,所以我可以在那里 ssh。
作为配置的一部分,我需要安装给定版本的 Java SDK。我将 exe 安装程序 (jdk-6u34-windows-i586.exe) 上传到机器并使用 /s 参数运行它(静默安装)。当我从 Windows 控制台(在远程桌面中)甚至通过远程桌面中的 cygwin 运行它时,它可以完美运行。但是当我 ssh 到那里并通过 ssh 在 cygwin 中运行它时,如果失败。
失败似乎很奇怪,因为安装程序将其内容部分提取到c:\Documents and Settings\Administrator\Application Data\Sun\Java\jdk1.6.0_34
其中,然后失败并退出代码 67。退出前提取的文件数量不同。
当使用 Java 和 以编程方式执行此操作时Jsch
,该命令还将错误消息打印initgroups: Permission denied
到错误流。当我通过 ssh 手动连接时,我没有看到这条消息,所以我不确定它是否相关(谷歌搜索时,我发现这个错误发生在完全不同的上下文中,这对我没有帮助)。
我欢迎任何解释,为什么会发生这种情况(以及如何修复/解决它)。也欢迎其他提示如何在 EC2 windows 机器上可靠地自动安装给定的 JDK。谢谢。