1.
프로젝트를 하면서 도전을 떠올린 과제가 있습니다. eclipse를 중심으로 개발프로세스의 구축입니다. 제가 아는 서버개발자들의 개발환경은 단순합니다. 대부분 서버에 Terminal로 접속하여 vi로 개발합니다. 서버에 접속할 때 많이 사용하는 프로그램이 Putty입니다. Putty와 vi로 만들 수 있는 개발프로세스는 제한적입니다. vi와 subversion이 대립하지 않지만 디렉토리에 의존한 소스관리를 할 뿐입니다. 지난 몇 개월의 실적를 되돌아 보면 아쉬움이 많이 남습니다. 시간이 정해진 프로젝트에서 개발자의 프로세스를 크게 바꿀 수 없었습니다. 관행은 습관화되어 있고 습관은 단기적인 생산성입니다. 익숙하지 않은 것을 익숙해지려면 시간과 끈기가 필요하고 문화가 바뀌어야 합니다. 저도 부족하고 시간도 부족한 지난 날입니다. 아쉬우면 아쉬운대로 목표를 향해 나아가야 하는 것이 프로젝트입니다. 프로세스보다 더 중요한 것이 결과입니다.
putty를 사용하는 개발자가 저에게 질문을 합니다. 디버깅을 위해 로그 모니터링을 하거나 컴파일시간이 오래 걸리는 작업을 하는 경우 일정시간 키입력이 없으면 putty가 먹통이 된다, 다른 터미날을 구해달라는 요청이었습니다. 제가 요청받은 프로그램은 Teraterm이었습니다.
혹시나 해서 다른 프로그램을 찾아보았습니다. 익히 아는 프로그램들이 많았습니다. 국내 개발자들이 가장 선호하는 프로그램은 넷사랑의 Xshell이더군요. 아쉬운 것은 상용이었습니다. 우연히 눈에 들어온 프로그램이 Mobaxterm입니다. 그냥 단순한 터미날프로그램으로 알았습니다. 그런데 설치를 해서 이것저것 사용해보니까 달랐습니다.
Mobaxterm은 Cygwin에 기반을 둔 프로그램입니다.Putty를 대체하는 프로그램이 아니고 Putty와 Cygwin 및 Xwindows환경을 통합한 제품이었습니다. 단순히 보면 SFTP로 사용하고 있는 Filezilla, 여러 세션을 관리하는 Putty Connection Manager를 통합한 제품입니다.
앞서 넷사랑의 Xmanager와 비슷한 제품입니다. Xmanager는 상용이지만 Mobaxterm은 GNU License입니다. 앞서 Mobaxterm가 제공하는 멀티윈도우기능은 훌륭하지만 세션갯수의 제한이 있습니다. 물론 상용이면 무제한입니다. 시험을 할 때 웹서버, 어플리케이션서버, DB서버 등과 세션을 연결하여 모니터링을 할 때가 있습니다. 이럴 때 십여개의 세션이 필요한데 Mobaxterm은 지원하지 않습니다. 이 때 대안은 Putty를 기반으로 한 멀티윈도우기능을 제공하는 프로그램을 이용하는 것입니다. 대표적인 프로그램으로는 MTPuTTY (Multi-Tabbed PuTTY) 와 Putty Connection Manager가 있습니다.
2.
그런데 Mobaxterm중 SSH Client는 Putty를 기반으로 하기때문에 앞서 증상을 해결할 수 없습니다. 혹시나 해서 찾아보았더니만 이런 답변이 있더군요.
좀더 찾아보니까 아래와 같이 친절한 글이 있네요.
정리하면 ‘세션유지를 위힌 빈패킷 보내기’에 특정한 값을 넣어서 사용하면 해결할 수 있을 듯 합니다.
일반적으로 Putty의 문제를 해결하려면 우선 FAQ를 읽어보면 좋을 듯 합니다. 앞서 keepalive도 있습니다.
만약 TCP Keepalive를 사용하면 어떻게 될까요? TCP Keepalive와 관련한 글을 읽어보시고 판단해보시길.
또다른 방법은 SSH Server의 환경설정을 바꾸는 것입니다. 다만 관리자 권한이 있거나 요청할 수 있어야 합니다.
To enable the keep alive system-wide (root access required), edit /etc/ssh/ssh_config; to set the settings for just your user, edit ~/.ssh/config (create the file if it doesn’t exist). Insert the following:
123 Host *ServerAliveInterval 300ServerAliveCountMax 2You can also make your OpenSSH server keep alive all connections with clients by adding the following to /etc/ssh/sshd_config:
12 ClientAliveInterval 300ClientAliveCountMax 2These settings will make the SSH client or server send a null packet to the other side every 300 seconds (5 minutes), and give up if it doesn’t receive any response after 2 tries, at which point the connection is likely to have been discarded anyway.
How to Keep Alive SSH Sessions중에서
TCP Keepalive는 TCP 프로토콜 옵션 사항으로 OS 수준에서 작동하기 때문에 SSH 클라이언트가 끊어지는 현상과는 관계가 없습니다. SSH 서버에서 사용하는 Keepalive는 응용 프로그램 수준에서 작동합니다.
Mobaxterm은 터미널 에뮬레이터에다 X윈도 클라이언트 기능까지 하네요? 대박…
윈도 환경에서는 훌륭한 대안이 되겠네요.
…
홈페이지 들어가 보니까 이거 단순한 프로그램이 아니네요.
친절한 의견 감사드립니다.
좋은 정보 감사합니다.
참고로 저는 putty 접속 후에 screen 명령어를 사용합니다.
$screen -S sockname
스크린에서 빠져 나올려면 “Ctrl+a,d”
다시 스크린에 접속하려면
$screen -x sockname
말씀하신 팁을 사용해보겠습니다.
안그래도 본사 돌아가면 putty 써야했는데 moba로 바꿔야겠네요 ㅋㅋ
같이 일하는 분들중 여럿이 putty에서 갈아타셨어요…. 저도 갈아탔고…무겁지만 좋은 프로그램이라는 생각입니다.
좋은 툴 소개 감사합니다. 난 이제야 알았네요.