본문 바로가기
서버/리눅스 서버

18. 우분투 / 데비안 Guacamole HTML5 기반 클라이언트 (SSH,VNC,RDP)

by ㅋㅋ잠자 2015. 5. 15.
반응형

안녕하세요. 도정진입니다.

   

웹 기반으로 원격연결을 구현하기 위해서 솔루션을 찾고 있었는데 Guacamole 이라는 솔루션이 있었습니다. 톰캣의 웹앱으로 만들어진 것으로

   

RDP 나 SSH 털넷, VNC 등을 자체적으로 연결하고 연결한 데이터를 지정한 포트로 보내주는 것입니다.

   

즉, 클라이언트에서 지정한 서버로 연결하는것이 아니라 서버측에서 연결을 하는 방식입니다. 그렇기 때문에 특정한 위치에서 특정 포트가 막혀있다.....

예를 들어서 VNC 기본포트인 5900 이나 RDP 기폰포트인 3389 SSH의 22 등의 포트가 막혀 있다고 해도 http로 접속이 가능하다면 서버단에서 연결 처리를 해주기 때문에 문제 없이 원격으로 작업을 할 수 있는 솔루션입니다.

   

공식 사이트는 아래와 같고 테스트 환경은 우분투 14.04 + 아파치2.4 + 톰캣7 입니다.

   

http://guac-dev.org/ 들어가셔서 메인페이지에 영상을 보시면 더욱 더 이해가 잘 될 것입니다.

   

   

그럼 시작합니다.

   

   

   

   

1. guacamole-server 컴파일 하기

   

일단 현재 버전은 0.9.6 입니다. 이 게시글이 오래 되어 최신버전이 나온다면 제작사 홈페이지에 가셔서 다운받아 주세요.

   

server, client, war 파일을 받아줍니다.

   

   

   

   

따라하시는 분들을 위해 제 서버에 링크를 시켜두었습니다. 혹여나 최신버전이 나오면 제작사 홈페이지에서 받아주세요.

   

실제로 클라이언트는 컴파일이 이미 .war 로 되어 있기 때문에 하실 필요는 없습니다. 혹시나 컴파일 하실 분은 아래의 문서를 참고해 주세요.

   

http://guac-dev.org/doc/gug/installing-guacamole.html

   

서버를 설치하기 전에 사전에 필요한 의존성 패키지를 설치해 주어야 합니다.

   

apt-get install make libcairo2-dev libpng12-dev freerdp-x11 libssh2-1 libvncserver-dev libfreerdp-dev libvorbis-dev libssl0.9.8 gcc libssh-dev libpulse-dev tomcat7 tomcat7-admin tomcat7-docs

   

톰캣이 정상적으로 구동중이라면 톰캣의 기본 포트는 8080으로 http://ip-adress:8080/ 을 들어가면 아래의 창이 나와야 정상입니다.

   

   

tar -xzf guacamole-server-0.9.6.tar.gz

받은 소스파일을 압축을 풉니다.

   

cd guacamole-server-0.9.6/

압축푼 위치로 이동해서 컴파일을 진행하게 됩니다.

   

   

--with-init-dir 옵션은 시작 위치를 지정해 주는 것입니다.

./configure --with-init-dir=/etc/init.d

이렇게 configure 을 해주고 별 문제가 없다면 아래와 같이 체킹 결과가 나옵니다.

   

   

이렇게 하고 컴파일을 진행하고 설치하기 위해서 아래의 명령을 입력합니다.

   

make && make install

그리고 설치된 라이브러리의 캐쉬를 업데이트 하기 위해서 아래의 명령어를 입력해 줍니다.

ldconfig

   

   

   

   

   

   

2. guacamole-client 설치하기

   

이미 컴파일 되어 있는 상태로 홈페이지에서 다운받을 수 있습니다. 저는 이미 컴파일 된 파일을 첫번째에서 받았습니다. 그 파일을 톰캣 디렉터리에 웹앱 위치에 넣어주고 클라이언트 설정파일을 씸링크 걸어주는 것으로 guacamole-client 설치 및 설정이 끝납니다.

   

파일을 다운받은 위치에서 .war 파일을 톰캣의 웹앱 위치로 넣어줍니다.

   

cp guacamole-0.9.6.war /var/lib/tomcat7/webapps/guacamole.war

   

그 다음에 guacamole 의 설정파일이 존재할 폴더를 만듭니다.

   

mkdir /etc/guacamole

   

mkdir /usr/share/tomcat7/.guacamole

   

다음 아래의 명령을통해 파일을 설정파일을 수동으로 생성해 줍니다.

   

nano /etc/guacamole/guacamole.properties

   

   

# Guacamole - Clientless Remote Desktop

# Copyright (C) 2010 Michael Jumper

#

# This program is free software: you can redistribute it and/or modify

# it under the terms of the GNU Affero General Public License as published by

# the Free Software Foundation, either version 3 of the License, or

# (at your option) any later version.

#

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

# GNU Affero General Public License for more details.

#

# You should have received a copy of the GNU Affero General Public License

# along with this program. If not, see <http://www.gnu.org/licenses/>.

   

   

# Hostname and port of guacamole proxy

guacd-hostname: localhost

guacd-port: 4822

   

# Auth provider class (authenticates user/pass combination, needed if using the provided login screen)

auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider

basic-user-mapping: /etc/guacamole/user-mapping.xml

   

윗 내용을 넣어주시면 되고, 기본적으로 소스 폴더안에 샘플로 들어 있는 것입니다. 여기서는 딱히 설정할 것이 없습니다.

   

그 다음 지금은 MySQL 같은 DB 를 사용해서 연결하는 방법이 아닌 파일 단위의 인증을 사용하려고 하기 때문에 아래의 파일도 생성해 줍니다.

   

nano /etc/guacamole/user-mapping.xml

   

user-mapping 에 대해서는 아래의 문서를 참고하시면 됩니다.

http://guac-dev.org/doc/gug/configuring-guacamole.html#user-mapping

   

저는 phpvirtualbox 의 콘솔을 연결해서 사용할 생각입니다.

   

저의 설정은 아래와 같습니다.

   

   

처음의 컨넥션은 버추얼박스의 윈도우XP에서 원격연결을 허용해서 나온 것이고 두번째는 혹시나 운영체제에 문제가 생겨서 버추얼 박스의 리모트 디스플레이를 연결해서 부팅과정까지 보려고 만들어 둔 것입니다.

   

첫번째와 다르게 username 과 password 를 입력해야 하는데 이는 전에 http://blog.djjproject.com/119 이 게시물의 3번에 vbox 계정을 만들 때 사용한 비밀번호를 입력하시면 됩니다.

   

그리고 phpvirtualbox 리모트 디스플레이 설정에서는

인증 방식을 External 로 해주시면 됩니다.

   

 

설정이 끝났으면 심링크를 걸어줍니다.

   

ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/

   

ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat7/webapps

   

ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/

   

혹시나 퍼미션 에러로 설정 파일을 읽을 수 없다는 에러가 발생하면 아래와 같이 조치해 주시면 됩니다.

   

저는 설치를 하고 나서 로그인 창이 뜨지 않았는데 /var/log/tomcat7 의 로그를 통해 퍼미션 문제가 있다는 것을 알았습니다.

   

   

unble to read guacamole.properties 라고 에러가 발생해서 퍼미션을 777로 설정했습니다. (물론 777은 좋지 않은 퍼미션이긴 합니다. 작동되는게 우선이다보니 ㅎㅎ)

   

   

   

   

   

   

   

3. 아파치 프록시 설정하기

   

가상호스트 설정은 아래와 같이 진행을 하면 됩니다.

   

   

-- 정확히 유저 맵핑 파일을 수정했는데 연결이 안되시는 분은 프록시 설정에 ProxyPassReverseCookiePath 를 설정하지 않아서 그런것입니다. 참고하세요!

   

<Virtualhost 192.168.0.2:80>

ProxyRequests Off

ServerName remote.djjproject.com

   

<Proxy *>

Order Deny,allow

Allow from all

</Proxy>

 

ProxyPass / http://127.0.0.1:8080/guacamole/ max=20 flushpackets=on

ProxyPassReverse / http://127.0.0.1:8080/guacamole/

ProxyPassReverseCookiePath /guacamole/ /        

   

   

</Virtualhost>

   

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

   

위 설정은 제가 쓰고 있는 설정이고 각자 환경에 맞게 수정하여 쓰시면 됩니다. ㅎㅎ

   

설정이 끝났으면 관련된 서비스를 재시작합니다.

   

service apache2 restart

   

service tomcat7 restart

   

service guacd restart

   

   

   

   

4. 사용해보기 !

   

저는 설정한대로 제 도메인을 통해서 접속하였습니다.

   

   

   

로그인을 하면 설정한 컨넥션이 나옵니다.

   

   

지금은 가상머신을 꺼 두었기 때문에 잠시 phpvirtualbox 로 이동하여 가상머신을 켭니다.

   

   

그리고 다시 guacamole 로 돌아와서 연결을 시도합니다.

   

먼저 콘솔 연결입니다. 콘솔은 가상머신이 부팅하는 과정까지 다 보입니다.

   

   

   

   

   

이렇게 사용하실 수 있습니다. 아직 소리가 전송되는지는 잘 모르겠습니다.

   

윈도우 자체 RDP 로 접속하면 아래와 같습니다.

   

   

   

기능상에서는 소리도 난다고 되어 있는데 설치과정이나 혹은 플러그인을 설치해야 되는 것 같습니다.

   

   

감사합니다. ㅎㅎ

   

반응형

댓글