답변:
예. 때로는 터널을 설정할 때 (예 : SOCKS 프록시) 자동 배경 연결을 원할 수도 있습니다. 이러한 예에서는 프로세스에 tty가 없어야합니다.
다음은 localhost에서 일부 원격 호스트로 포트 전달을 설정하는 예입니다.
ssh -l username -fNTL 8073:server:873
이것이 설정되면 원격 호스트 대신 로컬 호스트로 rsync 할 수 있으므로 효과적으로 rsync를 터널링 할 수 있습니다 ssh
...
rsync --port=8073 -a me@localhost::myStuff /tmp/myStuff/
rsync가 나가는 경우 server
차단되었지만 ssh
그렇지 않은 경우이 작업을 수행합니다 .
위의 이외에 ...
(1) 다른 틸다 탈출 처리 :
"~." pty (-t)가 있으면 escape가 연결을 끊습니다. 장기 실행 명령의 경우 ~를 입력하면 누군가 프로세스를 실수로 중지하지 못하게 할 수 있습니다.
$ ssh hostname.tomontime.com -t sleep 60
[유형 ~. 그리고] 끊어
폐쇄 hostname.tomontime.com에 연결.
$ ssh 호스트 이름 -T sleep 60
[I type ~. sleep 명령이 무시하는 일반 키 스트로크처럼 취급합니다.]
~.
~.
CTRL-C와 같은 것을 시도하십시오. -t를 사용하면 CTRL-C를 "sleep"로 보내는 것을 볼 수 있습니다. -T를 사용하면 CTRL-C를 시스템에서 실행중인 ssh 프로그램으로 보냅니다. 차이가있을 때가있을 수 있습니다 (예 : 프로그램이 INT를 HUP와 다르게 처리 함)
(2) pty 또는 네트워크 연결 활동을 최소화하려고합니다.
pty가없는 시스템을 재부팅하려고 할 때 시스템이 pty를 할당하도록 권장하지 않습니다! 또한 네트워크 연결을 닫아야합니다 (재부팅 지연).
이것은 더 빠르고 안정적으로 작동합니다.
ssh -T hostname reboot
ssh -t hostname reboot 문제가있을 수 있습니다.
ssh -t는 원격 시스템에 의사 터미널을 만듭니다. 이것은 여러 서버를 통해 ssh 명령을 연결하고 먼쪽에 실제 터미널을 원할 때 유용합니다 (예를 들어 'vi'를 사용할 수 있음).
터미널이있는 경우 로그인 스크립트가 다르게 동작 할 때 '-t'를 원하지 않을 수 있습니다. 이것은 잘못된 연습 IMHO이지만 1) 프롬프트 설정 및 2) 많은 대화 형 응용 프로그램의 경로를 확장하기 전에 로그인 스크립트가 TTY를 확인하는 경우를 보았습니다.
다른 경우 (위의 TomOnTime에서 언급) 실제로 모든 TTY (pty)가 모두 사용되는 경우가 있습니다. 분명히 잘못된 구성이지만 많은 터널 및 rsync에 대한 리소스를 씹을 필요는 없습니다.