Apache Guacamoleλ μ격 λ°μ€ν¬ν± κ²μ΄νΈμ¨μ΄μ
λλ€. Guacamoleμ νΉμ§μ λΈλΌμ°μ κΈ°λ°μ μΈν°νμ΄μ€λ₯Ό μ 곡νλ μ μ
λλ€. μ΄λ₯Ό ν΅ν΄ μ΄λ€ νκ²½μμλ ꡬμλμ§ μκ³ μ격 λ°μ€ν¬νμ μ μν μ μκ²νλ κ²μ΄ λͺ©μ μ
λλ€.
The principle reason to use Guacamole is constant, world-wide, unfettered access to your computers - guacamole.apache.org, "Why use Guacamole?"
μλ₯Ό λ€μ΄ μ§μ Guacamole μλ²λ₯Ό μΌλμμ λ, Guacamoleκ° μ§μ μλ λ°μ€ν¬νμ λμ μ격 μ μνκ³ , μ¬μ©μμ λ°μ€ν¬νμ μ¬μ΄μμ ν΅μ μ μ€κ³ν©λλ€.
μ¬μ©μκ° guacamole μλ²μ ipλ‘ μ μνλ©΄ μλμ κ°μ μΉ νμ΄μ§ μΈν°νμ΄μ€κ° νμλ©λλ€. μ¬μ©μλ μ΄ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μνλ λ°μ€ν¬ν±μ μ격 μ μν μ μμ΅λλ€. λλΆμ μ΄λ€ νκ²½μμλ λ³λμ μ격 ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μ μ€μΉν νμ μμ΄ μ¦μ μ μν μ μμ΅λλ€.
Guacamoleκ° κ²μ΄νΈμ¨μ΄λΌκ³ νμμ£ ? μ¬μ©μμ Guacamole μλ²λ http ν΅μ μ μ¬μ©νκΈ° λλ¬Έμ κ°νΉ RDP(3899)λ VNC(5900), SSH(22) ν¬νΈκ° λ§ν μλ κ²½μ° μ μ©νκ² μ¬μ©ν μ μμ΅λλ€.
Apache Guacamoleλ Tomcat μμμ λμνμ¬ μΉ νμ΄μ§ μΈν°νμ΄μ€λ₯Ό μ 곡νλ guacamole μλΈλ¦Ώ 컨ν μ΄λμ μ격 μ₯μΉμ μ°κ²°νμ¬ μ€μ§μ μΈ μ μΆλ ₯μ μννλ guacd λ°λͺ¬μΌλ‘ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
μ€μΉ λ°©λ²μΌλ‘λ Docker λ°©μκ³Ό Native λ°©μμ΄ μμ΅λλ€. Docker λ°©μμ νΈλ¦¬νκΈ΄ νμ§λ§ μ€λ²ν€λκ° μκΈ° λλ¬Έμ Native λ°©μμΌλ‘ μ§ννκ² μ΅λλ€.
μ λ μλμ νκ²½μμ μ€μΉλ₯Ό μ§ννμ΅λλ€.
νκ²½: Raspberry Pi 4 Model B, Ubuntu 22.04.3 LTS
λ²μ : Tomcat9, Guacamole 1.5.3, OpenJdk 11.0.21
$ sudo apt-get install openjdk-11-jdk
Java λ²μ μ΄ λ무 λμΌλ©΄ ν¨ν€μ§ λͺ μ λ³κ²½μΌλ‘ μΈν μΆ©λμ΄ λ°μν μ μμΌλ μ£Όμνμ μΌ ν©λλ€. μ¬κΈ°μλ 11 λ²μ μΌλ‘ μ€μΉνκ² μ΅λλ€.
Guacamole μλ²λ₯Ό λΉλνκΈ° μν΄ νμν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν΄μ€λλ€. 곡μ μ€μΉ κ°μ΄λμ μμ‘΄μ± λ¨λ½μμ required dependenciesμ optional dependenciesλ₯Ό μλ΄νκ³ μμΌλ μ°Έκ³ ν΄λ³΄μλ©΄ μ’μ κ² κ°μ΅λλ€.
$ sudo apt install build-essential libcairo2-dev libjpeg-turbo8-dev \
libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev \
freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev \
libpulse-dev libvorbis-dev libwebp-dev libssl-dev \
libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev \
libavformat-dev
λ€μμΌλ‘ Guacamoleμ μμ€μ½λλ₯Ό λ€μ΄λ°μμ£Όκ³ μμΆμ ν΄μ ν©λλ€.
$ wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz
$ tar -xvf guacamole-server-1.5.3.tar.gz
$ cd guacamole-server-1.5.3
λ€μ΄λ°μ μμ€μ½λλ₯Ό λΉλν©λλ€.
$ sudo ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
$ sudo make
$ sudo make install
μ λ°μ΄νΈλ λΌμ΄λΈλ¬λ¦¬μ λ°λͺ¬μ λ‘λν©λλ€.
$ sudo ldconfig
$ sudo systemctl daemon-reload
guacdλ₯Ό μ€νν©λλ€.
$ sudo systemctl start guacd
$ sudo systemctl status guacd
guacdκ° μλμΌλ‘ μ€νλλλ‘ μ€μ ν©λλ€.
$ sudo systemctl enable guacd
$ sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
$ wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-1.5.3.war
$ sudo mv guacamole-1.5.3.war /var/lib/tomcat9/webapps/guacamole.war
$ sudo systemctl restart tomcat9 guacd
μλ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ maria DBλ₯Ό μ€μΉν©λλ€.
$ sudo apt install mariadb-server
$ sudo mysql_secure_installation
μ°Έκ³ λ‘ λλ¬Έμ, μ«μ, νΉμλ¬Έμκ° κ° 1μ μ΄μ ν¬ν¨λ 8μ리 μ΄μμ λΉλ°λ²νΈλ‘ μ§μ ν΄μ£Όμ.
$ wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz
$ tar -xf mysql-connector-java-8.0.26.tar.gz
$ sudo mkdir -p /etc/guacamole/lib
$ sudo cp mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /etc/guacamole/lib/
$ wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-auth-jdbc-1.5.3.tar.gz
$ tar -xf guacamole-auth-jdbc-1.5.3.tar.gz
$ sudo mkdir /etc/guacamole/extensions
$ sudo mv guacamole-auth-jdbc-1.5.3/mysql/guacamole-auth-jdbc-mysql-1.5.3.jar /etc/guacamole/extensions/
μλμμ μμ μ ν¨μ€μλ λΆλΆμ μμ ν΄ μ€ννμλ©΄ λ©λλ€.
$ mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'μμ μ ν¨μ€μλ';
mysql> CREATE DATABASE guacamole_db;
mysql> CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'μμ μ ν¨μ€μλ';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
$ cd guacamole-auth-jdbc-1.5.3/mysql/schema
$ cat *.sql | mysql -u root -p guacamole_db
$ sudo vim /etc/guacamole/guacamole.properties
μλμ λ΄μ©μ λ£μ΄μ£Όμλ©΄ λ©λλ€.
# MySQL properties
mysql-hostname: 127.0.0.1
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: [μμ μ ν¨μ€μλ]
$ sudo systemctl restart tomcat9 guacd mysql
Tomcat μλ² λ‘κ·Έλ₯Ό νμΈν΄ μ€λ₯λ μλμ§, μλ€λ©΄ μ΄λ€ λΆλΆμμ λ°μνλμ§ νμΈν΄λ΄ μλ€.
$ tail -f /var/lib/tomcat9/logs/catalina.out
λΈλΌμ°μ λ‘ μ μνλ©΄ λ€μκ³Ό κ°μ νμ΄μ§λ₯Ό νμΈν μ μμ΅λλ€. μ΄κΈ° μμ΄λ, λΉλ°λ²νΈλ guacadminλ‘ λμΌν©λλ€.
κΈ°λ³Έ κ³μ μ μ·¨μ½νκΈ° λλ¬Έμ μλ‘μ΄ κ΄λ¦¬μ κ³μ μ μμ±ν΄μΌ ν©λλ€. (1) μ°μΈ‘ μλ¨μ κ³μ μ λλ¬ (2) 'μΈν 'μ μ νν©λλ€.
(1) μ¬μ©μ νμ μ ννκ³ (2) μ μ¬μ©μ λ²νΌμ ν΄λ¦ν©λλ€.
μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ λ ₯νκ³ λͺ¨λ κΆνμ μ€ λ€ μ μ₯ν©λλ€. λ§μ§λ§μΌλ‘, μλ‘κ² μμ±ν κ΄λ¦¬μ κ³μ μΌλ‘ λ‘κ·ΈμΈν λ€ κΈ°λ³Έ κ΄λ¦¬μ κ³μ (guacadmin)μ μμ ν΄μ£Όλ©΄ Guacamoleλ₯Ό μ¬μ©ν λͺ¨λ μ€λΉκ° λλ©λλ€.
μ격 λ°μ€ν¬νμ νλ©΄κ³Ό ν€λ³΄λ λ±μ μ λ³΄κ° μ‘μμ λκΈ° λλ¬Έμ μΈλΆμμ μ μν λλ λ°λμ HTTPS μ€μ μ ν΄μ£Όμ μΌ ν©λλ€. μ΄ λ΄μ©κΉμ§ λ€λ£¨λ©΄ κΈμ΄ λ무 κΈΈμ΄μ§λ νμ κΈμμ λ€λ£¨κ² μ΅λλ€.