느리거나 불안정한 연결에서 ssh를 어떻게합니까?


20

정말 느린 쉘 연결을 다루고 있습니다. 클라우드에 있으며 서버와 매우 멀리 떨어져 있습니다. 인터넷을 통해 연결이 끊어지고 공유 Wi-Fi 또는 3G를 사용하고있을 수도 있습니다. 입력 한 내용을 즉시 확인할 수있는 방법이 있습니까? 명령을 입력하고 각 문자를 기다리는 것은 끔찍합니다.


4
"스크린"을 사용하여 세션을 활성 상태로 유지하여 연결을 끊을 때 다시 연결할 수 있습니다.
Konerak

답변:


24

Mosh를 사용해보십시오 .

Mosh (모바일 셸)
로밍을 허용하고 간헐적 인 연결을 지원하며 사용자 키 입력의 지능형 로컬 에코 및 라인 편집 기능을 제공하는 원격 터미널 응용 프로그램입니다.

Mosh는 SSH를 대체합니다. 특히 Wi-Fi, 셀룰러 및 장거리 링크를 통해 더욱 강력하고 반응이 좋습니다.

Mosh는 무료 소프트웨어이며 GNU / Linux, FreeBSD, Solaris, Mac OS X 및 Android에서 사용할 수 있습니다.


3
주의 사항 : (1) ssh보다 CPU가 훨씬 많이 사용됩니다. (2) mosh 세션이 정상적으로 종료되지 않으면 다시 연결할 수없는 연결이 끊어집니다. (쉘 박스를 청소해야합니다. 그렇지 않으면 수십 개의 프로세스가 실행됩니다).
user606723

또 다른 문제는 SLES와 같은 Linux 배포판에 설치하는 것이 거의 불가능하다는 것입니다. openSuse 패키지로 설치하거나 소스에서 컴파일하는 데 몇 시간을 보냈습니다.
좀비

$ sudo를 zypper에서 MOSH (워드 프로세서 주문에 따라)
dmourati

예, 오픈 수세에서는 잘 작동하지만 기업 / 폐쇄 배포판에서는 새로운 오픈 소스 프로젝트를 설치하는 것이 매우 중요합니다.
좀비

10

dmourati 대답에 대한 대안 (및 추가) : 사용 screen또는 tmux당신이 분리되어 있거나 다른 일들이 살아 세션을 유지합니다. (다시 연결 한 후 세션에 다시 연결하기 만하면 전체 화면 프로그램 [vi 등]을 사용하더라도 터미널을 떠난 것처럼 보입니다.) 또한 Mosh 자신의 FAQ와 같이 다른 많은 이점 (동료와의 공유 세션 등)이 있습니다.

Q : 왜 터미널의 스크롤 백 버퍼가 불완전합니까?

Mosh 1.2는 터미널의 보이는 상태 만 동기화합니다. Mosh 1.3은 완전한 스크롤 백을 지원합니다. 이 문제와 관련이있는 다른 문제를 참조하십시오. 현재 해결 방법은 원격 측에서 screen 또는 tmux를 사용하는 것입니다.

또한 rsync연결이 끊어 질 때 네트워크를 통해 이미 전송 된 부품을 다시 보내지 않고도 파일을 복사 하는 데 사용해야 합니다.


2

대기 시간 / 병목 현상의 위치를 ​​확인해야합니다. 로컬 또는 공급 업체 측에서 인프라에 더 잘 액세스하도록 노력해야합니다. 중요한 세션 tmux이나 screen멀티플렉서 에서 중요한 세션을 포장합니다 .

번호를 알려주십시오. 간단한 SSH 세션에 문제가 발생하기 위해서는 특히 나쁜 연결이 필요합니다 . VPN을 통해 비행기 에서 전 세계 다른 쪽의 시스템에 액세스 해야했지만 여전히 큰 문제는 없었습니다. 이것이 지속적인 문제입니까? 무엇을 traceroute말합니까?


이 문제는 호텔 Wi-Fi에서 발생하며 라우터가 너무 적고 인터넷 액세스를 공유하는 장치 / 노트북이 너무 많습니다. 또한 공유 호텔 Wi-Fi는 본질적으로 1 개 이상의 벽을 통과하는 데 실제로 ms 지연이 많이 발생하므로 핑 시간이 매우 어색합니다. 그것은 또 다른 주요 병목 현상입니다. 3G에서도 비슷한 상황이 발생하는데, 휴대폰 타워까지의 거리가 멀어지면 MS가 추가된다. SSH 쉘을 사용할 때 각 문자를 기다려야합니다. 200-400의 MS는 꽤 성가신 일이지만 최대 1 초의 스파이크가 있습니다.
좀비

1

이 글을 읽는 독자들을 위해 블로그 에서 @lowellheddings의 tip 과 screen을 사용 하면이 문제를 극복하는 데 도움이 될 수 있습니다.

서버가 연결을 끊지 않도록 매 초마다 프로토콜 No-op 코드 코드를 자동으로 보내도록 ssh 클라이언트를 구성 할 수 있습니다. 다른 클라이언트에서는이 설정을 Keep-Alive 또는 Stop-Disconnecting-So-Much라고도합니다.
다음 행을 / etc / ssh / ssh_config 파일에 추가하십시오.
ServerAliveInterval 60
...

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