Putty timeout 설정 - Putty timeout seoljeong

PuTTY는 리눅스나 유닉스 계열의 서버관리자 라면 다들 써보았을 프로그램입니다. 서버에 원격으로 접속하기 위해서는 물론 ssh 가 접근 가능하도록 (또는 telnet, 허나 요즘 보안상 문제로 인해 대부분 ssh접속을 권장하고 있습니다.)열어 놓아야 PuTTY 라는 프로그램으로 접속 할 수 있습니다. 보통 서버는 IDC 센터에 별도로 관리되고 있기 때문에 서버에서 어떤 작업을 하려면 IDC 센터에 방문 등록을 하여 출입 허가를 받고 매번 직접 현장에 가서 작업 해야 하기 때문에 여간 힘들일이 아닙니다. 이러한 서버에 회사에서 접근 또는 집에서 VPN을 거쳐 회사를 통해 원격으로 접속해서 작업을 할 수 있다면 매우 편리 할 것입니다. 그래서 이러한 작업을 하기 위한 접속 프로그램인 PuTTY를 통해 서버에 접근 해서 작업을 수행 할 수 있습니다.

그래서 회사에서 손쉽게 서버작업을 수행 할 수 있으며, 서버에 문제가 만약에 생기더라도 직접 IDC 센터에 방문하지 않고서라도 처리 할 수 있습니다. 일단 서버에서 PuTTY로 접근 하는 방법을 알려드리겠습닏.(PuTTY 접속 방법이기 때문에 기타 다른 접근 할때 필요한 환경적인 설정 문제는 자세히 언급하지 않겠습니다.)

일단 PuTTY를 실행하면 처음에 화면이 뜨는데 Session 카테고리에서 Host Name(or IP address) 라는 빈칸에 원하는 ip 또는 호스트주소를 넣으시면 됩니다.(port 는 22번 그대로 두시면 됩니다. 접속해야 하는 서버가 22번 기본으로 열려 있다는 가정하에 말입니다.)

telnet 같은 경우는 요즘은 추천하지 않고 있습니다. 이유는 중간에서 패킷을 확인하게 되면 모든 내용이 오픈이 되어 확인 할 수 있기 때문입니다. 그래서 보안상 좋지 않기 때문에 되록이면 패킷이 암호화 되는 ssh 통신을 권장하고 있습니다. 상황상 필요에 따라 telnet 을 사용하지 않는 이상 되도록이면 telnet은 사용하지 마시기 바랍니다. 참고로 전 세계적으로 약속되어 사용하고 있는 ssh 와 telnet tcp 포트는 22번과 23번입니다. 여하튼 ip 또는 호스트 주소를 넣고 엔터키 또는 하단의 open 버튼을 누르면 서버에 접속을 시도합니다. 이때 새 프롬프트 창이 뜨는데 서버에 정상적으로 접속이 되었다면 계정을 물어보는 창이 뜰 것입니다. 만약 그렇지 않다면  Timeout 상태가 되면서 서버에 접속할 수 없다는 Connection Timeout 메시지를 보게 될 것입니다.

그리고 한글 깨짐 현상이 발생 되는경우!!! 서버 접속 후, 서버에서의 한글 메시지들이 깨지는 경우가 발생하기도 하는데, 이때에는 서버의 문자 집합(Character Set)을 제대로 설정하지 않아서 발생하는 문제입니다. 이 때에는 PuTTY의 다음 설정 화면(Window-Translation)에서 서버 인코딩 값(Character set)을 UTF-8로 설정하여 주면 해결 됩니다.

보통 putty는 무료 프로그램이긴 합니다만 Xsehll, SecureCRT 등의 유료프로그램도 있고, 업그레이드 버전인 dputty라는 프로그램도 있습니다.(Xshell 무료 라이센스도 제공합니다.)

그리고 윈도우 서버는 위 접속 프로그램과 다르게 원격 테스크톱 연결을 통해서 접속을 하고 있습니다.

putty 자세한 설명을 보여주는 위키백과의 putty 설명 - [출처] 위키 백과

PuTTY(퍼티, /ˈpʌti/[2])는 SSH, 텔넷, rlogin, raw TCP를 위한 클라이언트로 동작하는 자유 및 오픈 소스단말 에뮬레이터 응용 프로그램이다. PuTTY라는 이름에는 특별한 뜻이 없으나[3] tty는 유닉스 전통의 터미널의 이름을 가리키며 teletype를 짧게 줄인 것이다.

PuTTY는 본래 마이크로소프트 윈도용으로 작성되었으나 다른 다양한 운영 체제에도 포팅되었다. 공식 포팅은 일부 유닉스 계열 플랫폼에서 사용할 수 있으며 클래식 맥 OS맥 OS X으로의 포팅을 추진하고 있다. 심비안[4][5], 윈도 모바일과 같은 운영 체제에 대한 비공식 포팅도 존재한다.

PuTTY는 사이먼 테이썸이 관리하고 있으며 현재는 베타 소프트웨어이다.

ssh 는 보안을 위해서 일정 시간동안 사용이 없으면 자동으로 세션을 종료하는 세션 타임아웃(session timeout) 기능이 있습니다.

하지만 RHEL/CentOS 나 Ubuntu 를 설치하면 세션 타임아웃이 설정되어 있지 않으므로 무제한으로 연결이 지속되며 이는 보안상 매우 취약합니다.

다음 설정으로 ssh 세션 타임아웃 시간을 설정할 수 있습니다.

먼저 ssh daemon 설정 파일을 편집기로 엽니다.

vi /etc/ssh/sshd_config

BASH

타임 아웃에 관련된 설정은 아래 2 항목이며 세션 타임아웃은 (ClientAliveInterval * ClientAliveCountMax) 값만큼 지속되며 단위는 초입니다.

#ClientAliveInterval 0
#ClientAliveCountMax 3

BASH

즉 아래와 같이 설정했을 경우 600 * 3 = 1,800 이며 이는 30분이므로 30분동안 사용하지 않으면 ssh daemon 은 자동으로 연결을 끊어 버립니다.

ClientAliveInterval 600
ClientAliveCountMax 3

BASH

적절한 타임아웃 설정을 했으면 다음 명령어로 sshd 를 재시작하면 반영됩니다.

sudo systemctl restart ssh

BASH



SSH를 사용하다보면 접속이 끊겨서 다시 연결해야 하는 경우가 종종 있다.

보안상의 이유로 계속 사용하지 않으면 접속 종료하기 때문이다. 

개발 중 잠시 자리를 비우고 돌아왔을 때, SSH가 종료되어 있으면 귀찮기 마련이다. 

리눅스에서 SSH 접속을 계속 유지하기 위한 설정에 대해서 한번 정리해 보기로 한다.

원격 서버 설정

SSH로 접속하는 원격 서버에서 설정을 하면 접속하는 클라이언트에 동일하게 적용할 수 있다. 

원격 서버 설정은 SSH 데몬의 config 파일을 수정하면 된다. 

1. /etc/ssh/sshd_config 파일을 연다. 

# vi /etc/ssh/sshd_config

2. sshd_config 파일에 다음과 같이 추가한다. 

ClientAliveInterval 30

ClientAliveCountMax 5

ClientAliveInterval은 데이터가 수신되지 않으면 지정된 주기에 따라 데이터 전송하도록 클라이언트에 요청한다. 

여기에서는 30으로 되어 있으므로 30초마다 요청한다. 

만약 이 값이 0으로 되어 있으면 데이터 전송을 하지 않는다. 

무제한으로 요청하는 것은 문제가 있으므로 ClientAliveCountMax값을 통해 최대 요청 횟수를 지정하기도 한다. 

그러므로 작업을 안하고 있으면 최대 150초(30초 X 5회)까지는  연결이 유지된다. 

3. 파일을 저장하고 SSH 데몬을 재시작한다. 

# /etc/init.d/ssh restart

또는

# service sshd restart

하지만 원격 서버 설정은 보안상의 이슈가 더 커질 수 있기 때문에 다음 로컬 설정을 활용하는 것이 좋을 듯 하다. 

로컬 서버 설정

로컬 서버에서 설정도 비슷한 방식으로 수행한다. 

로컬의 모든 사용자가 사용하려면 /etc/ssh/ssh_config을 편집하고, 

현재 사용자만 할 경우 ~/.ssh/config 파일을 편집한다. 

# vi ~/.ssh/config

ServerAliveInterval 15

ServerAliveCountMax 3

원격 서버와 마찬가지로 데이터 전송 주기와 회수를 지정해서 연결을 유지한다. 

위 예제는 15초 마다 최대 3번까지 서버로 데이터를 전송하게 된다. 

TMOUT 설정

SSH 설정을 해놓더라도 비활성화되었을 때 자동으로 로그아웃이 될 수도 있다. 

이것은 원격 서버에 Time out 설정이 되어 있기 때문이다.  

# vi ~/.bashrc

export TMOUT=120

....

위와 같이 설정되어 있으면 TMOUT 부분을 삭제하거나 0으로 변경하면 된다. 

윈도우 Putty 설정

윈도우 환경에서 Putty를 사용할 경우 [PuTTY Configuration] - [Connection]에서 설정 가능하다.