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가 로컬 프로그램과 동일한 서버 측 프로그램 실행 경험을 제공한다면 좋을 것입니다.

관련 정보