웹사이트 검색

Debian 11에 Apache Guacamole을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 빌드 종속성 설치
  3. Apache Tomcat 9 설치
  4. Guacamole 서버 컴파일
  5. Guacamole-Server 설정
  6. Guacamole 클라이언트 웹 애플리케이션 설치\n
  7. Guacamole용 Nginx 역방향 프록시 설정\n
  8. Apache Guacamole 설치 확인\n
  9. 결론

Apache Guacamole은 SSH, RDP 및 VNC와 같은 다양한 프로토콜을 사용하여 컴퓨터/서버에 원격으로 연결할 수 있는 무료 오픈 소스 원격 데스크톱 게이트웨이입니다. Apache Guacamole은 Apache Software Foundation에서 관리하며 Apache License 2.0으로 라이선스가 부여됩니다.

Apache Guacamole은 클라이언트리스 원격 데스크톱 게이트웨이입니다. 언제 어디서나 웹 브라우저만 사용하여 Apache Guacamole에 액세스할 수 있습니다. RDP가 있는 Windows, VNC 및 SSH가 있는 Linux 시스템과 같이 프로토콜이 다른 여러 원격 운영 체제가 있는 경우 Apache Guacamole을 사용하는 것이 좋습니다.

이 자습서에서는 Apache Guacamole을 Debian 11 Bullseye에 설치하고 구성합니다. 여기에는 일부 패키지 종속성 및 Apache Tomcat 9 설치, Guacamole 서버 구축 및 Java 애플리케이션인 Guacamole 웹 애플리케이션 설치가 포함됩니다. 결국 Nginx를 Guacamole 웹 애플리케이션의 리버스 프록시로 설정하여 웹 브라우저만 있으면 어디서나 서버에 액세스할 수 있습니다.

전제 조건

이 자습서를 완료하려면 다음 요구 사항이 필요합니다.

  • Debian 11 Bullseye를 실행하는 최소 2GB RAM이 있는 서버.\n
  • 루트 권한을 가진 사용자 또는 루트가 아닌 사용자.\n
  • 나노 편집기에 대한 기본 지식. 또는 vim과 같은 선호하는 편집기를 사용할 수 있습니다.\n

빌드 종속성 설치

처음에는 Apache Guacamole 서버를 빌드하기 위한 일부 빌드 종속성을 설치합니다. 여기에는 VNC 프로토콜 지원을 활성화하는 libvncserver-dev, SSH 프로토콜용 libssh2-1, RDP 프로토콜용 freerdp2-dev, Kubernetes 지원용 libwebsockets-dev와 같은 몇 가지 기본 패키지가 포함됩니다.

참고로 Telnet 지원을 위해 libtelnet-dev를 설치하지 않습니다. 이는 텔넷이 오래된 프로토콜로 간주되어 안전하지 않기 때문입니다.

1. 이제 아래의 apt 명령을 실행하여 패키지 목록을 업데이트합니다.

sudo apt update

2. 그런 다음 다음 명령을 실행하여 Apache Guacamole 서버를 빌드하기 위한 종속 항목을 설치합니다.

sudo apt install -y freerdp2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libcairo2-dev libjpeg62-turbo-dev libjpeg-dev libpng-dev libtool-bin libpango1.0-dev libpango1.0-0 libssh2-1 libwebsockets16 libwebsocketpp-dev libossp-uuid-dev libssl-dev libwebp-dev libvorbis-dev libpulse-dev libwebsockets-dev libvncserver-dev libssh2-1-dev openssl

이 명령은 서버 인터넷 연결에 따라 완료하는 데 다소 시간이 걸릴 수 있습니다.

아파치 톰캣 9 설치

빌드 종속성을 설치한 후 Apache Tomcat 9를 설치합니다. 이 패키지는 Java로 작성된 웹 애플리케이션인 Guacamole 웹 애플리케이션에 필요합니다.

1. 다음 명령을 실행하여 시스템에 Apache Tomcat 9를 설치합니다.

sudo apt install -y tomcat9 tomcat9-admin tomcat9-common tomcat9-user

2. Apache Tomcat 9가 설치된 후 아래 명령을 실행하여 Apache Tomcat 서비스를 시작하고 활성화합니다. Debian 기반 시스템에서 Apache Tomcat 9는 tomcat9라는 서비스와 함께 제공됩니다.

sudo systemctl enable --now tomcat9

3. 이제 모든 것이 정상이면 아래 명령을 실행하여 tomcat9 서비스의 상태를 확인합니다.

sudo systemctl status tomcat9

다음 출력을 받게 됩니다. tomcat9 서비스가 활성(실행 중)인지 확인하십시오.

Guacamole 서버 컴파일

이 섹션에서는 Guacamole 서버를 다운로드하고 컴파일합니다. 이것은 원격 서버 및 데스크톱에 연결하기 위한 라이브러리가 포함된 Apache Guacamole의 주요 구성 요소입니다. Guacamole-server에는 C 라이브러리 libguacd와 지원되는 프로토콜을 위한 모든 라이브러리는 물론 Guacamole의 핵심인 guacd가 포함되어 있습니다.

guacd는 guacamole 웹 애플리케이션에서 터널링된 모든 클라이언트 연결을 처리한 다음 이를 대신하여 원격 서버 및 데스크톱에 연결합니다. Guacamole-server를 빌드하고 컴파일하면 시스템에 새로운 서비스 guacd가 생깁니다.

1. 작업 디렉터리를 /usr/src로 이동하여 시작합니다. 빌드 및 컴파일을 위한 모든 소스 코드는 이 디렉토리로 이동합니다.

cd /usr/src

2. 이제 아래의 wget 명령을 실행하여 Guacamole-server 소스 코드를 다운로드합니다. Guacamole 다운로드 페이지를 확인하고 최신 버전의 Guacamole-server를 복사하십시오. 이 글을 쓰는 시점에서 최신 버전은 1.3.0입니다.

wget https://dlcdn.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz

3. 그런 다음 소스 코드를 추출하면 새 디렉터리 guacamole-server-VERSION-NUMBER가 생성됩니다. 해당 디렉터리로 이동합니다.

tar -xzvf guacamole-server-1.3.0.tar.gz
cd guacamole-server-*/

4. 이제 Guacamole 서버 구축을 위한 모든 시스템 요구 사항을 확인하고 다음 명령을 실행하여 환경을 설정합니다. --with-systemd-dir=/etc/systemd/system/ 옵션은 /etc/systemd/system/ 디렉터리에서 사용할 수 있는 systemd 서비스 파일을 설정하는 데 사용됩니다. .

./configure --with-systemd-dir=/etc/systemd/system/

다음과 유사한 출력이 표시됩니다.

------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------

   Library status:

     freerdp2 ............ yes
     pango ............... yes
     libavcodec .......... yes
     libavformat.......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... no
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ yes
     libwebsockets ....... yes
     libwebp ............. yes
     wsock32 ............. no

   Protocol support:

      Kubernetes .... yes
      RDP ........... yes
      SSH ........... yes
      Telnet ........ no
      VNC ........... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes
      guaclog .... yes

   FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
   Init scripts: no
   Systemd units: /etc/systemd/system/

Type "make" to compile guacamole-server.

라이브러리 상태프로토콜 지원 섹션을 살펴보십시오. 추가 종속성 및 라이브러리를 설치하여 프로토콜 지원을 조정할 수 있습니다.

5. 다음으로 아래 명령을 실행하여 Guacamole-server를 컴파일하고 설치합니다.

make
make install

컴파일 및 설치 프로세스를 완료하는 데 다소 시간이 걸릴 수 있습니다.

6. 이제 모든 것이 완료된 후 다음 명령을 실행하여 모든 새 시스템 라이브러리를 적용하십시오.

sudo ldconfig

이 섹션에서는 Guacamole-server 패키지를 설치했습니다. 다음으로 Guacamole 서버에 필요한 몇 가지 구성을 만듭니다.

Guacamole-Server 설정

Guacamole-server가 작동하도록 하려면 구성 디렉토리 /etc/guacamole/을 만든 다음 새 파일 guacamole.properties를 기본 Guacamole-server 구성인 파일로 만듭니다. Guacamole 로깅 시스템용 logback.xml 및 Guacamole 사용자 인증 및 원격 서버 및 데스크톱 연결을 정의하기 위한 파일 user-mapping.xml.

1. 시작하려면 다음 명령을 실행하여 내부의 추가 디렉터리 extensionslib 내에 새 디렉터리 /etc/guacamole/을 만듭니다. 그런 다음 환경 변수 GUACAMOLE_HOME=/etc/guacamole을 /etc/default/tomcat9 파일에 추가합니다. 이렇게 하면 Tomcat 9 서블릿 컨테이너가 GUACAMOLE_HOME 디렉토리에서 /etc/guacamole/을 찾도록 지시할 것입니다.

mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9

2. 이제 nano 또는 원하는 편집기를 사용하여 기본 구성 guacamole.properties를 만듭니다.

sudo nano /etc/guacamole/guacamole.properties

다음 구성을 입력합니다.

# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822

# user mapping and user connections
user-mapping:    /etc/guacamole/user-mapping.xml

  • guacd-hostname 옵션은 guacd 서비스가 실행될 호스트 이름 또는 IP 주소를 정의합니다. 이 자습서에서는 localhost를 사용하여 guacd 서비스를 실행합니다.\n
  • guacd-port 옵션은 guacd 서비스의 기본 포트를 정의합니다. 이 자습서에서는 guacd 서비스에 포트 4822를 사용합니다.\n
  • user-mapping 옵션은 사용자 인증을 위한 파일 구성과 사용 가능한 연결 목록을 정의합니다. 이 자습서에서는 /etc/guacamole/user-mapping.xml 파일을 사용하여 Guacamole 서버에 대한 사용자 및 연결을 정의합니다. 다른 인증 방법을 사용하려면 Guacamole 설명서를 확인하십시오.\n

파일을 저장하고 닫습니다.

3. 다음으로 로깅 및 디버깅을 위한 새 구성 loogback.xml을 만듭니다. 기본적으로 Guacamole은 콘솔에만 로그인합니다. 이 구성을 사용하면 Guacamole이 Logback 로깅 프레임워크를 통해 로깅할 수 있습니다.

sudo nano /etc/guacamole/logback.xml

다음 구성 줄을 추가합니다.

<configuration>

    <!-- Appender for debugging -->
    <appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Log at DEBUG level -->
    <root level="debug">
        <appender-ref ref="GUAC-DEBUG"/>
    </root>

</configuration>

구성 파일을 저장하고 닫습니다.

4. 이제 새 md5 암호 해시를 생성하고 Guacamole 사용자 인증 및 연결을 위한 새 파일을 만듭니다.

다음 명령을 실행하여 md5 비밀번호 해시를 생성하십시오. 그리고 강력한 암호로 암호를 변경해야 합니다.

echo -n StrongPasswordUserJohnDoe | openssl md5

mod5 해시된 암호의 출력을 받게 됩니다. 메모에 복사합니다.

(stdin)= aca22211ffcfb8aa8ad7627195ad4fce

5. 그런 다음 nano 편집기를 사용하여 새 파일 user-mapping.xml을 만듭니다.

sudo nano /etc/guacamole/user-mapping.xml

다음 구성을 입력합니다. 그리고 사용자 이름과 암호를 변경했는지 확인하십시오. 또한 ... 섹션을 살펴보고 서버 또는 데스크탑에 대한 연결 세부 정보를 추가하십시오.

<user-mapping>

    <!-- Another user, but using md5 to hash the password
         (example below uses the md5 hash of "PASSWORD") -->
    <authorize
            username="johndoe"
            password="aca22211ffcfb8aa8ad7627195ad4fce"
            encoding="md5">

        <!-- First authorized connection -->
        <connection name="SSH localhost">
            <protocol>ssh</protocol>
            <param name="hostname">localhost</param>
            <param name="port">22</param>
            <param name="username">johndoe</param>
            <param name="password">SSHPASSWORD</param>
        </connection>

        <!-- Second authorized connection -->
        <connection name="localhost">
            <protocol>vnc</protocol>
            <param name="hostname">localhost</param>
            <param name="port">5901</param>
            <param name="password">VNCPASS</param>
        </connection>

        <!-- Third authorized connection -->
        <connection name="otherhost">
            <protocol>vnc</protocol>
            <param name="hostname">otherhost</param>
            <param name="port">5900</param>
            <param name="password">VNCPASS</param>
        </connection>

    </authorize>

</user-mapping>

파일을 저장하고 닫습니다.

이제 Guacamole-server 구성을 완료했습니다. 다음으로 브라우저에 표시되는 웹 응용 프로그램인 Guacamole 웹 응용 프로그램을 설치하고 구성합니다.

Guacamole 클라이언트 웹 애플리케이션 설치

이 섹션에서는 Guacamole 웹 애플리케이션을 시스템에 설치합니다. Guacamole 웹 애플리케이션의 컴파일된 바이너리 파일을 다운로드하고 Tomcat webaps 디렉터리에 배포하면 됩니다.

1. 작업 디렉토리를 /usr/src로 이동하고 wget 명령을 사용하여 컴파일된 Guacamole 웹 응용 프로그램 .war을 다운로드합니다. Guacamole 다운로드 페이지를 방문하여 최신 버전의 Guacamole 웹 애플리케이션에 대한 링크를 복사하십시오.

cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war

2. 이제 다음 명령을 실행하여 Java 바이너리 응용 프로그램 guacamole-VERSION.war을 Tomcat 디렉터리 /var/lib/tomcat9/webapps/에 배포합니다. 이렇게 하면 Apache Tomcat 서블릿 컨테이너를 통해 Guacamole 웹 애플리케이션에 액세스할 수 있습니다.

sudo cp guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war

3. 그런 다음 Tomcat 9 서비스를 다시 시작하여 새 웹 응용 프로그램을 적용합니다.

sudo systemctl restart tomcat9

4. 다음으로 아래 명령을 실행하여 guacd 서비스를 시작하고 활성화합니다.

sudo systemctl enable --now guacd

그런 다음 다음 명령을 사용하여 확인하십시오.

sudo systemctl status guacd

아래 스크린샷과 같은 출력을 받게 됩니다.

이 시점에서 Guacamole 서버 애플리케이션(백엔드) 및 Guacamole 웹 애플리케이션(프론트 엔드)의 설치를 완료했습니다. 다음으로 Nginx를 Guacamole 웹 애플리케이션의 리버스 프록시로 설정합니다.

Guacamole용 Nginx Reverse 프록시 설정

이 섹션에서는 Nginx 웹 서버를 설치하고 Guacamole 웹 애플리케이션의 리버스 프록시로 구성합니다. 이를 통해 Guacamole 웹 애플리케이션의 도메인 이름을 설정하고 SSL 인증서로 보호할 수 있습니다.

1. 시작하려면 다음 apt 명령을 실행하여 Nginx 패키지를 설치합니다.

sudo apt install nginx -y

2. 모든 Nginx 패키지가 설치된 후 /etc/nginx/sites-available 디렉토리에 새 가상 호스트 파일인 guacamole을 생성합니다. Guacamole 리버스 프록시와 관련된 모든 구성이 이 파일에 저장됩니다.

sudo nano /etc/nginx/sites-available/guacamole

다음 구성을 입력하십시오. 그리고 SSL 인증서의 도메인 이름과 경로를 변경했는지 확인하십시오. 이 예에서는 SSL 개인 키 privkey.pem 및 공개 키 fullchain.pem과 함께 도메인 example.io를 사용하고 다음 위치에서 사용할 수 있는 봇 인증서를 사용합니다. 디렉토리 /etc/letsencrypt/live/exmaple.io/.

server {
    listen      80;
    server_name example.io;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
    listen      443 ssl http2;
    server_name example.io;

    root /var/www/html;
    index index.html;

    location / {
       try_files $uri $uri/ =404;
    }

    ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;

    access_log /var/log/nginx/guacamole-access.log;
    error_log /var/log/nginx/guacamole-error.log;

    location /guacamole/ {
        proxy_pass http://127.0.0.1:8080/guacamole/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        access_log off;
    }
}

파일을 저장하고 닫습니다.

3. 이제 /etc/nginx/sites-enabled/ 디렉토리에 대한 새 심볼릭 링크를 생성하여 가상 호스트 파일 과카몰리를 활성화합니다. 그런 다음 모든 Nginx 구성을 확인하여 구문 오류가 있는지 확인합니다.

sudo ln -s /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
sudo nginx -t

구성에 오류가 없음을 의미하는 Syntax OK 출력이 표시됩니다.

4. 그런 다음 Nginx 서비스를 다시 시작하여 새 구성을 적용한 후 다음 명령을 실행하여 상태를 확인합니다.

sudo systemctl restart nginx
sudo systemtl status nginx

아래 스크린샷과 유사한 출력이 표시됩니다. Nginx 서비스가 활성(실행 중) 상태입니다.

5. 또한 다른 하위 URL에 Guacamole 웹 응용 프로그램을 배포하려면 location /guacamole/ { ... } 옵션을 새 경로 location /new-path/로 변경합니다. { ... } 그리고 아래와 같이 새 경로에 proxy_cookie_path 옵션을 추가합니다.

location /new-path/ {
    proxy_pass http://127.0.0.1:8080/guacamole/;
    proxy_buffering off;
    proxy_http_version 1.1;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $http_connection;
    proxy_cookie_path /guacamole/ /new-path/;
    access_log off;
}

이 섹션에서는 Nginx 설치 및 Guacamole 웹 애플리케이션용 리버스 프록시 구성을 완료했습니다. 이 시점에서 Apache Guacamole 설치가 완료되고 도메인 이름에서 액세스할 수 있습니다.

Apache Guacamole 설치 확인

이 섹션에서는 Apache Guacamole 설치를 확인합니다.

먼저 웹 브라우저를 열고 기본 경로 /guacamole과 함께 Guacamole 설치를 위한 도메인 이름을 입력합니다.

이제 아래에 Guacamole 로그인 페이지가 표시됩니다. user-mapping.xml 파일에 구성한 사용자 이름과 암호를 입력한 다음 로그인 버튼을 클릭합니다.

로그인하면 사용자에 대해 정의된 연결 목록이 표시됩니다.

연결 이름을 클릭하여 대상 서버에 연결합니다. 이 예제는 SSH 프로토콜을 사용하여 로컬 서버에 연결합니다.

이제 서버에 새로운 ssh 터미널 세션이 표시됩니다.

결론

축하합니다! 이 튜토리얼에서는 Debian 11 Bullseye에 Apache Guacamole을 설치하는 방법을 배웠습니다. 또한 구성 파일 user-mapping.xml을 사용하여 사용자 인증 및 연결을 설정하는 방법과 Nginx를 Guacamole 웹 애플리케이션의 역방향 프록시로 설정하는 방법을 배웠습니다. SSL 인증서를 사용하여 도메인 이름을 보호합니다.