2011-12-09 71 views
5

我不能在我的ec2客户端上运行“sudo su”,我通过java程序ssh进入客户端并通过程序运行命令。 虽然我可以运行诸如“ls”和“ifconfig”之类的命令。在ec2实例上运行sudo命令

我收到一个错误,提示“sudo:对不起,您必须有一个tty才能运行sudo”。

我该如何运行命令,我使用jsch作为ssh到我的ec2实例。

回答

4

看起来像默认情况下Jsch不会为远程会话分配一个伪tty - 这可能会破坏一些希望以交互方式运行的程序。它看起来像你可能能够使用ChannelExec.setPty函数来请求一个pty - 但我没有与Jsch一起工作,不能自己测试这个。

+0

我会试试! –

+0

它的工作,谢谢你! –

+0

请注意:我为JSch创建了一些Javadoc,您可能想要链接http://epaul.github.com/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPty(boolean) 。 –

6

通过使用sudo-S选项,您可以在没有伪-tty的情况下使用JSch执行“sudo”。

查看JSch网站上的Sudo.java以获取完整示例。

(我是JSch的作者)