SSHセッションのheredocブロック内のsudoコマンドは機能しません。

SSHセッションのheredocブロック内のsudoコマンドは機能しません。

heredocを使用してすべてのコマンドをheredocに入れると、

ssh -t -i master.pem cloud-user@$1 <<EOSSH
sudo service x restart
sudo service y restart
EOSSH

エラーが発生します。

Pseudo-terminal will not be allocated because stdin is not a terminal.

他の -t オプションを追加すると正常に動作します。

ssh -t -t -i master.pem cloud-user@$1 <<EOSSH
sudo service x restart
sudo service y restart
EOSSH

pseudo-terminalSSHセッションの文脈では、これはどういう意味ですか?

stdin is not a terminal- BashはSSHクライアントに標準入力端子を提供していませんか?

オプションとは何を-t意味し、-t -tオプションとどう違いますか-t

ベストアンサー1

説明したようにman ssh

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

おすすめ記事