2012-04-25 22 views
78

私は、sudoを使ってリモートサーバー上のSSH経由で別のスクリプトを実行するスクリプトを持っています。しかし、パスワードを入力すると、パスワードが端末に表示されます。 (それ以外の場合は正常に動作します)sshでsudoする適切な方法

ssh [email protected] "sudo script" 

ので、私は私が入力すると、表示されてパスワードなしでSSH上にsudoのパスワードを入力することができ、これを行うための適切な方法は何ですか?

+1

私にとっては、sshを通してsudoする方法を探す理由は、 'sudo:no tty presentとno askpass programがないので、' ssh <[email protected]> sudo

1

NOPASSのターゲットマシン上の構成が解決策です。もう一つの方法は、ssh-tスイッチを使用することですhttp://maestric.com/doc/unix/ubuntu_sudo_without_password

+4

この場合、私は実際にはパスワードを直接入力したいので、これは私のためには機能しません。 – darkfeline

-3

は、使用状況に応じて、私は次のように成功を収めて:

ssh [email protected] "script" 

これにより、rootパスワードの入力が求められ、コマンドが正しく実行されます。

+18

Yikes、rootとしてのSSH?それはあらゆる理由で悪い考えです。 – darkfeline

+11

sshはtelnetではないことを覚えておいてください。他のユーザーとしてsshを実行してsudoを実行するよりも、rootとしてsshを実行することは危険ではありません。あなたのパスワードはssh接続と同じ方法で暗号化されます。 –

+17

ステファンは、パスワードの安全性に関する限り、絶対に正しいです。しかし、sudoの代わりにrootを使用すると、sudoを使う監査証跡が失われます。また、ルートアクセスが利用できない可能性があります。 – djeikyb

0

最も良い方法はssh -t [email protected] "sudo <scriptname>"です。たとえばssh -t [email protected] "sudo reboot"です。 それは我々がroot権限でスクリプトやコマンドを実行しているので、(最初にして、ルートユーザのパスワードを入力するように求められます。

私はそれを助け、あなたの疑問をクリアしたいと考えています。

0

あなたは何のパスワードプロンプトをしたいんと仮定すると、 :

ssh $HOST 'echo $PASSWORD | sudo -S $COMMMAND' 

ssh [email protected] 'echo secret | sudo -S echo hi' # outputs 'hi'