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-terminal
SSHセッションの文脈では、これはどういう意味ですか?
stdin is not a terminal
- BashはSSHクライアントに標準入力端子を提供していませんか?
オプションとは何を-t
意味し、-t -t
オプションとどう違いますか-t
?
答え1
説明したようにman ssh
:
-t は擬似 tty 割り当てを強制します。これは
、リモートコンピュータで任意の画面ベースのプログラムを実行するために使用できます。これは、たとえば
メニューサービスを実装するときに便利です。 複数の -t
オプションは、ssh にローカル tty がない場合でも tty 割り当てを強制します。