VNC virtual network computing 사용.

송지석의 이미지

원문은 http://mimosa.snu.ac.kr/~rommance/wikix/index.php?display=VNC 에서 보실 수 있습니다...

차례
1. VNC란
2. vnc 사용하기
3. ssh 터널링을 이용한 secure한 vnc 접속

!VNC란
VNC는 Virtual Network Computing의 약자로, 원격으로 컴퓨터에 접속하여 사용할 수 있게 합니다.
예전 PC애니웨어나, 윈도우즈의 터미널 서비스와 비슷한 기능인데, VNC는 오픈소스이며, x86/Windows만이 아닌 여러가지 플랫폼을 지원해줍니다.
원래 vnc는 AT&T의 프로젝트였지만, [예전 개발 홈페이지 | http://www.uk.research.att.com/vnc/ ]
지금은 http://www.realvnc.com 으로 개발이 옮겨졌고 그 외에 tightVNC등 클론들도 여럿 있습니다.
또한 vnc를 이용한 소프트웨어 제품들도 많이 나오고 있습니다.
제 vnc의 스크린샷입니다.

위 스크린샷처럼 vnc를 사용하면 윈도우에서 리눅스,유닉스, 다른 윈도우즈 컴퓨터들을 모두 접속해서 사용할 수 있습니다.

!vnc 사용하기
vnc를 사용하려면 먼저 설치가 되어야겠죠?
홈페이지에서 윈도우즈용,리눅스용등 자기가 쓸 플랫폼에 맞는 설치 파일을 가져다가 설치합니다.
윈도우즈용은 인스톨 프로그램으로 설치가 쉽게 되어있습니다.
자세한 설명은 하지 않겠습니다. vnc는 다른 데 검색해보시면 사용법을 어렵잖게 찾으실 수 있을 겁니다.
먼저, 서버(접속할 곳)에 vnc server를 실행해야 합니다.
윈도우즈 용은 시작메뉴->프로그램->VNC로 찾아들어가서 보면 Run VNC(App mode)라는 것으로 실행하면 됩니다.
(시스템을 켤 때마다 쓰려면 install as service로 등록하시면 됩니다.)
시작하기 전에 패스워드를 지정하고 기타 옵션 메뉴가 뜨고 서버가 실행됩니다.

리눅스에서 실행하시려면 vncserver라는 프로그램을 실행하면 됩니다. 리눅스에서는 설정을 여럿 건드릴 수 있습니다.
조금 복잡한 면도 있지만 윈도우즈랑 다른 매력은 실행되는 데스크탑이 서로 다른 X 세션으로 열리기 때문에 원격으로 접속해도 그 서버의 로컬 화면을 쓰는 것이 아니라
백그라운드로 새로운 데스크탑이 만들어져 사용되는 겁니다. 장단점이 있겠지만 리눅스는 여러 설정이 가능합니다. (데스크탑 번호를 정할 수 있습니다)
한컴 리눅스 3.1에 기본으로 깔린 원격 데스크탑 공유도 이 vnc를 사용하여 접속할 수 있습니다. 대신 이때는 설정을 어떻게 했는지 모르지만 로컬 화면을 제어할 수 있습니다.
리눅스도 처음 실행 할 때는 암호를 정하게 됩니다.
윈도우즈용 클라이언트를 실행하면 접속할 주소창이 뜨는데, 일단 윈도우즈에 접속한다면, 접속할 서버의 ip만 치면 됩니다. 그리고 암호 치고 들어가면 되지요.
리눅스는 여러 데스크탑을 띄울 수 있기 때문에 처음에 서버를 실행할 때 번호를 부여합니다. vncserver :1 처럼요.
그러면 클라이언트에서는 ip번호:1 이렇게 치고 들어가면 됩니다. 여기서 :1은 데스크탑 번호입니다.
정확히는 포트 번호 offset입니다.
원래 vnc가 5900 포트를 사용하는데 이것을 기준으로 1 2 3 등 offset을 줘서 실행하여 vncserver :1로 실행하면 5901포트가 열리고 :2로 하면 5902로 녈리는 것이죠.
말로 설명하느라 힘들었습니다. 하지만 실제로는 훨씬 쉽습니다. 인터넷에서 스크린샷을 찾아보시면 확실히 쉽다고 느끼실 겁니다.

! ssh 터널링을 이용한 secure한 vnc 접속
고급사용자를 위한 내용입니다.
vnc도 기본적으로 암호화를 할 지는 모르겠습니다만, 안전하지 않은 것은 사실일 겁니다.
vnc 홈페이지에 보면 ssh tunneling을 사용해서 안전한 접속을 하는 use모델 설명이 있습니다. [여깁니다. | http://www.uk.research.att.com/archive/vnc/sshvnc.html ]
먼저 ssh tunneling (port forwarding) 을 아셔야 합니다.

자 여기 잘 설명된 문서가 있습니다. [클릭| http://people.kldp.org/~eunjea/securepop/Secure-POP+SSH-2.html ]
결국 tunneling이란 것을 사용하면 ssh로 접속한 상태에서, 상대방의 또다른 포트, 또는 아예 다른 ip의 다른 포트를 ssh를 통과한 포트로 안전하게 접속할 수 있습니다.
예를 들어 제 PC가 rommance로 A라는 서버가 있다고 칩시다. 그리고 A에는 ssh 접속이 되고 웹서비스도 된다고 치지요.
제가 ssh를 접속하면서 내 8080포트를 A:80 포워딩 시켰다고 합시다.

그러면 만일 제가 웹브라우저를 띄우고 주소창에 http://localhost:8080 치면 A 서버의 웹페이지가 나옵니다.
이렇게 되는 것이죠.

내PC 8080 포트->내PC ssh클라이언트 ->ssh 암호화-> A의 ssh 서버 -> A의 웹 서비스포트(80)
내가 내 PC의 8080포트를 접속하면 실제로는 ssh프로그램을 통해 이 포트가 A의 80 포트로 매핑되는 것이죠. 그리고 그 안에는 ssh 암호화가 들어가서 secure해집니다.

그럼 이제 vnc를 이 ssh 터널링으로 사용하는 법을 알아보죠.
가장 어려운 방법으로 이렇게 상황을 설정합니다.

내PC - 인터넷 - 보안서버A - 서버B

내 PC : 그냥 보통 인터넷에 물려있다. 윈도우즈 PC라고 생각하지요.
보안 서버 A : ssh 서비스가 제공되고, 파이어월 기능이 제공됩니다. 주소를 firewall.rommance.net으로 가정하겠습니다.
서버 B: vnc 서비스가 제공됩니다. ssh 서비스는 지원 안합니다.
보안서버 뒷단에 있기 때문에 외부로부터의 공격과 접속이 차단됩니다.
IP도 사설 ip를 사용합니다.
192.168.1.30 으로 쓴다고 가정하지요.
OS는 윈도우즈라고 가정하겠습니다.

그럼 어떻게 할거냐면

내 PC 5910 포트 -> 내 PC ssh클라이언트 -> ssh 암호화 -> A의 ssh서버 -> B의 vnc서비스(5900포트)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
여기까지 ssh를 사용한 보안이 제공됩니다. A와 B 사이에는 원래 망이 secure하다는, 또는 제한을 걸지 않는다는 보장이 있어야 합니다.
보통 회사의 방화벽이 그렇듯이 말이죠.
먼저 ssh 클라이언트가 내 PC에 있어야 합니다.
여기서는 putty를 사용하겠습니다.
먼저 putty를 실행하시고

접속할 서버 A의 주소를 치시고, 프로토콜을 ssh로 설정합니다.

그다음, ssh->tunnels 메뉴에 가서

자기 포트 5910을 적어주고
포워딩될 주소 192.168.1.30:5900 을 넣어주고 Remote에 체크하고 Add 합니다.
그리고 접속하면 암호를 넣으라고 나오고, ssh 계정에 맞게 id와 암호를 넣고 접속합니다.
그리고나서, vncviewer를 실행합니다.

서버 B의 5900 포트와 연결된 것이 자기 PC의 포트 5910번이니까 주소를 localhost:10으로 하면됩니다.
5900에 offset 10을 더하면 5910이 되지요.
암호를 물어보고 접속해보면 서버 B의 윈도우즈 데스크탑 화면이 나올 것입니다.

Forums: 
익명 사용자의 이미지

좋은 글 고맙습니다 :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.