在EC2实例上运行sudo命令

5

我无法在我的ec2客户端上运行“sudo su”命令,我通过一个Java程序ssh进入客户端并通过程序运行该命令。虽然我可以运行“ls”和“ifconfig”等命令。

我收到一个错误提示:“sudo: sorry, you must have a tty to run sudo”。

我该如何运行这个命令?我使用Jsch连接到我的ec2实例。

2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
6
您可以使用JSch的-S选项来执行不带伪终端的"sudo"。请参考JSch网站上的Sudo.java进行完整示例。(我是JSch的作者。)

4

看起来默认情况下,Jsch不为远程会话分配一个伪终端 - 这可能会破坏一些期望交互式运行的程序。 看起来你可以使用ChannelExec.setPty函数请求一个pty,但我没有使用过Jsch,无法自己测试。


只是一条注释:我为JSch创建了一些Javadocs,你可能想链接http://epaul.github.com/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPty(boolean)。 - Paŭlo Ebermann
各位,我正在使用ChannelExec.setPty,但之后无法进行ssh连接,出现“从套接字读取失败:对等方重置连接”的消息。请问有谁能指导我做错了什么吗? - waqas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,