tty(-t)なしでスクリプトからsshを介してリモートホストで実行すると、sudoはクラッシュします。

tty(-t)なしでスクリプトからsshを介してリモートホストで実行すると、sudoはクラッシュします。

AIX 6.1サーバーがあり、sudobashスクリプトからリモートコマンドを実行する必要があります。

私のbashスクリプトを単純化すると、次のようになります。

TestSudo.sh

#!/usr/bin/bash
set -x

sudo env

sudoパスワードなしでローカルでコマンドを実行できます。

[user@server]$ sudo env
VAR=VAL
...

スクリプトをローカルで実行できます。

[user@server]$ /tmp/testSudo.sh
+ sudo env
VAR=VAL
...

sudoリモートホストで実行できます。

[user@client]$ ssh user@server sudo env
VAR=VAL
...

tty を使用してリモートホスト上でスクリプトを実行できます。

[user@client]$ ssh -t user@server /tmp/testSudo.sh
+ sudo env
VAR=VAL
...

ttyがないと、リモートホストでスクリプトを実行できません(そしてコンテキストに-tオプションを追加することもできません)。

[user@client]$ ssh user@server /tmp/testSudo.sh
+ sudo env

そこにかかっています。

答え1

端末なしで実行される場合、Sudoはパスワードクエリを処理するためにヘルパーが必要です。

SUDO_ASKPASS    Specifies the path to a helper program used to read the
password if no terminal is available or if the -A option is specified.

通常、sshとsudoを介して接続するときにパスワードを入力する必要がありますが、端末は割り当てられず、エラーが報告されます。 AIXでは異なる場合があります。

sudo設定を確認し、すべてのリモートシステムでNOPASSWDを有効にします。正しい規則は次のとおりです(/ etc / sudoersの末尾に追加)。

user ALL= NOPASSWD:/tmp/testSudo.sh

関連情報