SSHがサーバー側にttyを割り当てる必要があるのはなぜですか?

SSHがサーバー側にttyを割り当てる必要があるのはなぜですか?

デフォルトでは、サーバーで対話型プログラムを実行している場合は、代わりにssh -t使用する必要がありますssh。たとえば、次のようになります。

  • これは働きます: ssh -t user@server top

  • これはうまくいきません:ssh user@server top

問題は、sshがそのようなプログラムを実行するためにサーバー側のttyを要求するのはなぜですか?サーバープログラムとクライアントttyの間で直接データをストリーミングすることは可能ですか?


いくつかの詳細を追加するには、ttyがstdoutとstderrを単一のストリームに多重化できることを知っています。つまりssh -t、クライアント側を実行する場合、stdoutとstderrの違いを区別することはできず、別々にパイプすることもできません。それで、その間にあるサーバー側のttyが透明性を破壊すると思います。 sshがローカルプログラムと同じサーバー側プログラムの実行経験を提供することをお勧めします。

ベストアンサー1

おすすめ記事