2011-12-09 11 views
5

私のec2クライアントで "sudo su"を実行することができません。私は、javaプログラムを介してクライアントにsshを送り、プログラムを通してコマンドを実行します。 "ls"や "ifconfig"のようなコマンドを実行できます。ec2インスタンスでsudoコマンドを実行する

「sudo:申し訳ありませんが、sudoを実行するにはttyが必要です」というエラーが表示されます。

どのようにコマンドを実行できますか。私はec2インスタンスに対してsshを実行するためにJschを使用しています。

答えて

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オプションを使用すると、JSchで擬似ttyなしで "sudo"を実行できます。

完全な例については、JSchウェブサイトのSudo.javaを参照してください。

(私はJSchの著者です)

関連する問題