Linux

VNC with SSH

행복한하루 2008. 3. 3. 23:36
이번글은 VNC viewer 이용시 SSH를 이용하여 보안을 강화하는 방법에 대해 설명하고 합니다. 그리고 여러 VNC viewer중에 RealVNC를 기준으로 설명을 하도록 하겠습니다.

홈페이지를 방문하신 분은 아시겠지만, 제품 종류가 3가지가 있습니다.
  • Free Edition         : 무료라서 일반적으로 가장 많이 쓰이는 버젼입니다.
  • Personal Edition   : 이 버젼 부터는 License를 돈을 주고 사야하는데, 가격이 USD $30 입니다. Free Edition에 비하여 보안이 강화되었습니다.
  • Enterprise Edition : 가격은 USD $50 으로 Personal Edition 기능에 몇가지 기능이 더 추가된 버젼입니다. 최상위 버젼입니다.
위에 설명한 가격은 1개당 가격이고 혹시 여러개를 구입하실 분들은 홈페이지에서 License 개수를 입력할 수 있으니 확인해 보시기 바랍니다.

위에 보신대로 VNC 보안을 위해서는 Personal Edition 이나 Enterprise Edition을 구입해서 사용하면 되지만, Free Edition에 SSH를 붙여서 사용하는 방법도 있습니다.

간단하게 그림으로 표현하면 아래와 같습니다.
SSH는 Secure Shell의 약자로 통신을 할때 송수신 하는 패킷을 암호화 / 복호화하는 역할을 합니다. 그래서 보안 기능이 없는 Free Edition VNC 사용시 이와 같이 SSH와 같이 사용하게 되면 VNC 패킷이 암호화 되어 송수신되므로 좀 더 안전하게 사용하실 수 있습니다.

사용자 삽입 이미지

VNC with SSH


이렇게 이용하기 위해서는 당연한 얘기겠지만, vnc server가 설치되어 있는 Linux server에 SSH을 위한 sshd 데몬이 돌고 있어야 하고 관련 설정이 이미 되어 있어야 합니다.

sshd 데몬은 "ps" 명령을 이용해서 동작하고 있는지 확인 할 수 있습니다.

$ ps -ef | grep sshd
root     21183     1  0 Feb23 ?        00:00:00 /usr/sbin/sshd

$

그리고 Windows PC에서는 sshd와 연결을 위한 SSH client가 필요한데, 전 테러텀프로(http://myknowledge.kr/38)를 사용했습니다. (Putty도 많이 쓰이긴 하지만 전 개인적으로 테라텀프로를 더 좋아합니다. ^^)

1. 테라텀프로 SSH 연결하기

Host에는 접속하고자 하는 vnc server가 설치되어 있는 Linux의 IP주소를 입력하면 됩니다. 그리고 Service에서 Telnet대신에 SSH를 선택하시면 됩니다. SSH version은 Linux에서 지원하는 버젼과 맞추어 주시면됩니다.

사용자 삽입 이미지

Tera Term: New connection


이렇게 해서 접속을 하면 아래와 같은 메시지가 뜨는데, "Add this machine and its key to the known hosts list" 옵션을 enable 시키고 "Continue"버튼을 클릭하면 됩니다.

사용자 삽입 이미지

Security Warning


SSH가 정상적으로 연결이 되면 User namePassphrase를 물어보는 창이 뜹니다. 여기서는 Linux에서 사용하고 계시는 본인의 계정 정보를 넣어 주시면 됩니다.

사용자 삽입 이미지

SSH Authentication


2. SSH 포워딩 설정하기

이렇게 해서 정상적으로 접속이 되면 SSH 포워딩(Forwarding)을 설정해야 합니다. (vnc traffic을 SSH로 송수신 하기 위하여 필요한 것입니다.)

SSH Forwarding은 Setup메뉴에 있습니다.

사용자 삽입 이미지

Setup -> SSH Forwarding


SSH Forwarding을 선택하면 아래와 같이 Port Forwarding을 설정할 수 있는 메뉴가 나오는데, 여기서 Add 버튼을 클릭해서 vnc port를 추가해야 합니다.

사용자 삽입 이미지

TTSSH: Forwarding Setup


Add버튼을 누르면 아래와 같이 SSH Port Forwarding을 설정할 수 있는 메뉴가 나옵니다. 여기서 Forward local port 에 5922를 입력하시고, to remote maching은 공란으로 남겨 놓으시고 그 옆의 port에 5922라고 적으시고 OK버튼을 누르면 됩니다.

사용자 삽입 이미지

SSH Port Forwarding


여기서 5922라고 적은 것은 제가 사용하는 VNC server의 port가 5922이기 때문입니다. 보통 VNC server는 5900 과 5800 번대의 Port를 사용하는데, 이 Port 번호를 base로 사용자가 설정한 display 번호를 더해서 사용합니다.

예를 들어 vncserver를 띄울때 "vncserver -geometry 1280x1024 :2" 이렇게 명령어를 실행하면 5902 또는 5802가 vncserver 의 포트가 되는 것입니다. 제 경우는 display 번호를 22를 사용했기 때문에 port를 5922로 입력한 것입니다. 즉 이말은 위에서 Forward local port에 5922 대신 5822를 입력해도 된다는 얘기입니다. (관련 명령어가 궁금하시면 "리눅스에서 VNC 사용하기" 글을 참고하시기 바랍니다.)

아래는 리눅스 서버에서 "netstat -ta" 명령을 이용하여 vncserver port가 열려 있는지를 확인하는 방법입니다.


$ netstat -ta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 *:5922                      *:*                         LISTEN
tcp        0      0 *:6022                      *:*                         LISTEN
tcp        0      0 *:5801                      *:*                         LISTEN
tcp        0      0 *:5802                      *:*                         LISTEN
tcp        0      0 *:5901                      *:*                         LISTEN
tcp        0      0 *:5902                      *:*                         LISTEN
tcp        0      0 *:6001                      *:*                         LISTEN
tcp        0      0 *:6002                      *:*                         LISTEN
tcp        0      0 *:albd                      *:*                         LISTEN
tcp        0      0 *:5822                      *:*                         LISTEN
tcp        0      0 *:6022                      *:*                         LISTEN
tcp        0      0 *:6001                      *:*                         LISTEN
tcp        0      0 *:6002                      *:*                         LISTEN
tcp        0      0 *:ssh                       *:*                         LISTEN
$


이렇게 해서 테라텀 프로의 SSH Port Forwarding 설정이 끝나면 아래와 같이 설정된 것을 볼 수 있습니다. 여기서 그냥 OK 버튼을 클릭하시면 됩니다.

사용자 삽입 이미지

TTSSH: Forwarding Setup


3. VNC viewer 연결

이렇게 해서 SSH 이용을 위한 테라텀의 설정이 끝났습니다. 이제 VNC viewer를 이용하여 접속을 하면 SSH를 통하여 통신이 이루어지게 됩니다.

VNC viewer에서는 Server에 리눅스 서버의 IP 주소 대신에 "localhost:22" 라고 입력합니다. 여기서 localhost라고 적는 것은 현재 테라텀으로 연결되어 있는 SSH를 이용하기 위한 것이고 22 는 display번호를 의미합니다.

사용자 삽입 이미지

VNC Viewer : Connection Details


이렇게 해서 정상적으로 연결이 되면 아래와 같이 Password를 물어봅니다. 그림에 표시된 거처럼 원래 VNC Viewer는 암호화를 지원하지 않습니다. 하지만 SSH를 이용하기 때문에 해당 정보가 암호화 되어 전달되게 됩니다.

사용자 삽입 이미지

Authentication [No Encryption]


이뿐만 아니라 VNC를 통하여 주고 받는 데이터는 모두 SSH를 통하여 암호화 되어 리눅스 서버로 전달이 됩니다.

(참고) Wireshark로 확인해보기

아래 화면은 VNC with SSH 이용시 Wireshark를 이용하여 PC와 리눅스 서버간의 패킷을 capture한 화면입니다. 보시는 바와 같이 패킷이 암호화 되어 전송되는 것을 확인 하실 수 있습니다.

사용자 삽입 이미지

Wireshark capture 화면


이렇게 해서 테라텀프로를 이용하여 VNC with SSH 동작 시키는 방법에 대해 알아 봤습니다.


'Linux' 카테고리의 다른 글

Fedora9 Flash Player 설치  (1) 2008.08.29
md5sum (파일 체크섬)  (0) 2008.03.25
MySQL Error : Client does not support authentication protocol  (0) 2008.02.19
VNC 화면 공유하기  (0) 2007.12.22
리눅스에서 VNC 사용하기  (1) 2007.12.05