sshクライアントオプション「-T」は、疑似端末の割り当てを無効にします。
このオプションをオンにすると、リモートsshdはリモートコマンドを実行するためのptyを割り当てません。リモートコマンドの出力はどのようにsshクライアントに転送されますか?私が知っているように、sshクライアントとサーバー間の単純な入出力は次のとおりです。
ssh client <--- (TCP/IP) --> ssh server <---> ptm <---> pts <---> remote command
オプション-Tを使用すると、sshdがリモートコマンドを実行するためのptyペアを作成しないことを意味しますか?
_-T
_を使用してpty割り当てをオフにすると、sshdは双方向ptyの代わりにパイプのペアを使用して、リモートコマンドを実行しているプロセスと通信します。
それがどこにも文書化されていない場合は、OpenSSHソースコードの do_exec_no_pty()
関数を見ることができます。 dropbear
(別のsshd実装)も同様のことをしています。
Pty isが割り当てられている場合(_-t
_オプションまたはリモートコマンドが指定されていない場合)、リモートマシンには1つのptyのみが割り当てられます。クライアントsshはローカルマシンにptyを割り当てません。それがttyの場合は、stdinでrawモードをオンにするだけです。