musshが存在せず、Askpassプログラムが指定されていません。

musshが存在せず、Askpassプログラムが指定されていません。

MUSSHを使用してリモートシステムでbashスクリプトを実行する

$ mussh -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
sudo: unable to resolve host hostname
[email protected]: sudo: no tty present and no askpass program specified

マシンの1つに直接SSH経由でスクリプトを実行すると、すべてがうまく機能します。

答え1

mussh値を持つオプションを使用して端末を割り当てる必要があるという要件を通知できますssh。たとえば、次のようになります。-oRequestTTY

mussh -o RequestTTY=yes -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2

直接使用する場合は、そのオプションを使用sshできますが、他の目的に使用できます。-tmussh-tそれ到着ssh):

-t
擬似tty割り当てを強制します。これは、リモートコンピュータ上で任意の画面ベースのプログラムを実行するために使用することができ、これは、例えばメニューサービスを実装する場合に有用である。-t sshにローカルttyがない場合でも、複数のオプションがtty割り当てを強制します。

RequestTTY
セッションの疑似端末を要求するかどうかを指定します。パラメータは次のいずれかです。no(TTYを要求しないでください)、yes (標準入力がTTYの場合は常にTTYが要求されます。)force (常にTTYをリクエストしてください)またはauto(ログインセッションを開くとTTYが要求されます。)このオプションはミラーリング-t-Tフラグ付け SSH(1)

追加資料:

答え2

さて、問題を解決しました! (退勤後に戦った後)

完全な作業コードは次のとおりです。https://github.com/aurelien-git/MAS]

解決策はRequestTTYを使用しないことです。

ただし、/root/.ssh/authorized_keysにAuthorized_keysが必要です。

これでコマンドを正常にロードできます。

mussh -a -i /home/aurelien/.ssh/id_rsa -d -H mas-hostfile -C 'update.sh' -m2

そしてもっと;-)

関連情報