私の場合、2 レベルの ssh 呼び出しの外側の ssh に pty の割り当てを強制すると、問題が解決しました。
詳細:
ssh が実行するコマンド (例: ssh some_server "do_some_command" ) を指定すると、ssh は対話セッションが不要であると想定し、要求された "do_some_command" ジョブをサブミットするときに pty を割り当てません。
ただし、2 層の ssh がある場合は、興味深いことになります (たとえば、最初に「ゲートウェイ」マシンに ssh し、そこから「内部」マシンに ssh して「inner_command」を実行するとします)。
問題は、2 層の ssh ジョブでは、外側の ssh の観点から、外側の ssh が非対話型コマンドを実行することを要求しているため、外側の ssh は tty を割り当てません。
内側の ssh で実行しているコマンドが対話型であることが意図されている場合、おそらく tty 属性を照会する必要があり、(当然のことながら) tty で実行されていないと不平を言うでしょう。
私の場合の解決策は、 -t 引数を使用して、外側の ssh に pty を割り当てるよう強制することでした。したがって、次のようになりました。
ssh -t <gateway_machine> "ssh <inner_machine> \"<inner_interactive_command>\" "
そこにいるシステム管理者への挨拶