기본적으로 서버에서 대화형 프로그램을 실행하는 경우 ssh -t
대신 를 사용해야 합니다 ssh
. 예를 들면 다음과 같습니다.
이것은 작동합니다:
ssh -t user@server top
.이것은 작동하지 않습니다:
ssh user@server top
.
문제는 ssh가 그러한 프로그램을 실행하기 위해 서버 측 tty를 요구하는 이유는 무엇입니까? 서버 프로그램과 클라이언트 tty 간에 직접 데이터를 스트리밍하는 것이 가능합니까?
몇 가지 세부 사항을 추가하려면 tty가 stdout과 stderr을 단일 스트림에 다중화할 수 있다는 것을 알고 있습니다. 즉 ssh -t
, 클라이언트 측을 실행하는 경우 stdout과 stderr의 차이를 구분할 수 없으며 별도로 파이프할 수도 없습니다. 그래서 그 사이에 있는 서버 측 tty가 투명성을 파괴한다고 생각합니다. ssh가 로컬 프로그램과 동일한 서버 측 프로그램 실행 경험을 제공한다면 좋을 것입니다.