ssh -t가 ssh 대신 언제 적절하지 않습니까?


15

원격 서버 연결 ssh -t대신에 사용하면 ssh몇 가지 장점이 있습니다. 예를 들어 vim :을 사용하여 파일을 직접 편집 할 수 있습니다 ssh -t host vim foo.txt. 그렇지 않으면 실패합니다.

ssh를 사용할 때 (의사) tty를 할당하는 것이 좋지 않은 상황이 있습니까?

답변:


11

입력을 파이핑하거나 입력을 다시 가져올 때 "ssh host 명령"이 일반적으로 사용됩니다. 제어 문자는 TTY 계층에서 해석 될 수 있습니다 (예 : ^ S).


10

예. 때로는 터널을 설정할 때 (예 : 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그렇지 않은 경우이 작업을 수행합니다 .


고마워, 이것도 옳았지만, 내가 간과 한 더 심각한 문제이기 때문에 다른쪽에 투표했다.
Alex J

3

위의 이외에 ...

(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 문제가있을 수 있습니다.


2

ssh -t는 원격 시스템에 의사 터미널을 만듭니다. 이것은 여러 서버를 통해 ssh 명령을 연결하고 먼쪽에 실제 터미널을 원할 때 유용합니다 (예를 들어 'vi'를 사용할 수 있음).

터미널이있는 경우 로그인 스크립트가 다르게 동작 할 때 '-t'를 원하지 않을 수 있습니다. 이것은 잘못된 연습 IMHO이지만 1) 프롬프트 설정 및 2) 많은 대화 형 응용 프로그램의 경로를 확장하기 전에 로그인 스크립트가 TTY를 확인하는 경우를 보았습니다.

다른 경우 (위의 TomOnTime에서 언급) 실제로 모든 TTY (pty)가 모두 사용되는 경우가 있습니다. 분명히 잘못된 구성이지만 많은 터널 및 rsync에 대한 리소스를 씹을 필요는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.