Cách cài đặt Apache Guacamole trên Debian 11

theanh

Administrator
Nhân viên
Apache Guacamole là một cổng máy tính từ xa miễn phí và mã nguồn mở cho phép bạn kết nối với máy tính/máy chủ của mình từ xa bằng nhiều giao thức khác nhau như SSH, RDP và VNC. Apache Guacamole được bảo trì bởi Apache Software Foundation và được cấp phép theo Giấy phép Apache 2.0.

Apache Guacamole là một cổng máy tính từ xa không cần máy khách. Bạn có thể truy cập Apache Guacamole chỉ bằng trình duyệt web từ bất kỳ đâu vào bất kỳ lúc nào. Nên sử dụng Apache Guacamole nếu bạn có nhiều hệ điều hành từ xa với nhiều giao thức khác nhau, chẳng hạn như Windows với RDP, hệ thống Linux với VNC và SSH.

Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình Apache Guacamole thành Debian 11 Bullseye. Điều này bao gồm cài đặt một số gói phụ thuộc và Apache Tomcat 9, sau đó xây dựng máy chủ Guacamole và cài đặt ứng dụng Java, ứng dụng web Guacamole. Cuối cùng, bạn sẽ thiết lập Nginx làm proxy ngược cho ứng dụng web Guacamole cho phép bạn truy cập máy chủ của mình từ bất kỳ đâu, miễn là bạn có trình duyệt web.

Điều kiện tiên quyết​

Để hoàn thành hướng dẫn này, bạn sẽ cần các yêu cầu sau:
  • Máy chủ có ít nhất 2GB RAM chạy Debian 11 Bullseye.
  • Người dùng sử dụng hoặc không phải root có quyền root.
  • Kiến thức cơ bản về trình soạn thảo nano. Hoặc bạn có thể sử dụng trình soạn thảo ưa thích của mình như vim.

Cài đặt phụ thuộc xây dựng​

Đầu tiên, bạn sẽ cài đặt một số phụ thuộc xây dựng để xây dựng máy chủ Apache Guacamole. Điều này bao gồm một số gói cơ bản như 'libvncserver-dev' cho phép hỗ trợ giao thức VNC, 'libssh2-1' cho giao thức SSH, 'freerdp2-dev' cho giao thức RDP và 'libwebsockets-dev' để hỗ trợ Kubernetes.

Để cân nhắc, bạn sẽ không cài đặt 'libtelnet-dev' để hỗ trợ Telnet. Lý do là vì telnet được coi là giao thức cũ và không an toàn.

1. Bây giờ, hãy cập nhật danh sách gói của bạn bằng cách chạy lệnh apt bên dưới.
Mã:
sudo apt update
2. Sau đó, cài đặt các phụ thuộc để xây dựng máy chủ Apache Guacamole bằng cách chạy lệnh sau.
Mã:
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
Lệnh này có thể mất một thời gian để hoàn tất, tùy thuộc vào kết nối internet của máy chủ của bạn.

Cài đặt Apache Tomcat 9​

Sau khi cài đặt các phụ thuộc xây dựng, bạn sẽ cài đặt Apache Tomcat 9. Gói này là bắt buộc đối với ứng dụng web Guacamole, một ứng dụng web được viết bằng Java.

1. Chạy lệnh sau để cài đặt Apache Tomcat 9 vào hệ thống của bạn.
Mã:
sudo apt install -y tomcat9 tomcat9-admin tomcat9-common tomcat9-user
2. Sau khi Apache Tomcat 9 được cài đặt, hãy khởi động và kích hoạt dịch vụ Apache Tomcat bằng cách chạy lệnh bên dưới. Trên các hệ thống dựa trên Debian, Apache Tomcat 9 đi kèm với dịch vụ có tên là 'tomcat9'.
Mã:
sudo systemctl enable --now tomcat9
3. Bây giờ, nếu mọi thứ có vẻ ổn, hãy xác minh trạng thái của dịch vụ 'tomcat9' bằng cách chạy lệnh bên dưới.
Mã:
sudo systemctl status tomcat9
Bạn sẽ nhận được kết quả đầu ra sau. Đảm bảo dịch vụ 'tomcat9' đang 'hoạt động (đang chạy)'.


Biên dịch Guacamole-server​

Trong phần này, bạn sẽ tải xuống và biên dịch Guacamole-server. Đây là thành phần chính của Apache Guacamole, chứa các thư viện để kết nối với máy chủ và máy tính để bàn từ xa. Guacamole-server chứa thư viện C 'libguacd' và tất cả các thư viện cho các giao thức được hỗ trợ, cũng như trái tim của Guacamole, guacd.

Guacd xử lý tất cả các kết nối máy khách được truyền qua đường hầm từ ứng dụng web guacamole, sau đó kết nối với máy chủ và máy tính để bàn từ xa thay mặt cho chúng. Bằng cách xây dựng và biên dịch Guacamole-server, bạn sẽ có một dịch vụ mới 'guacd' trên hệ thống của mình.

1. Bắt đầu bằng cách điều hướng thư mục làm việc đến '/usr/src'. Tất cả mã nguồn để xây dựng và biên dịch các thứ đều nằm trong thư mục này.
Mã:
cd /usr/src
2. Bây giờ, bạn sẽ tải xuống mã nguồn Guacamole-server bằng cách chạy lệnh wget bên dưới. Hãy chắc chắn kiểm tra trang Tải xuống Guacamole và sao chép phiên bản mới nhất của Guacamole-server. Tại thời điểm viết bài này, phiên bản mới nhất là 1.3.0.
Mã:
wget https://dlcdn.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz
3. Sau đó, giải nén mã nguồn và bạn sẽ nhận được một thư mục mới 'guacamole-server-VERSION-NUMBER'. Điều hướng đến thư mục đó.
Mã:
tar -xzvf guacamole-server-1.3.0.tar.gz
cd guacamole-server-*/
4. Bây giờ, hãy xác minh tất cả các yêu cầu hệ thống để xây dựng Guacamole-server và thiết lập môi trường của bạn bằng cách chạy lệnh sau. Tùy chọn '--with-systemd-dir=/etc/systemd/system/' được sử dụng để thiết lập tệp dịch vụ systemd, tệp này sẽ có sẵn tại thư mục '/etc/systemd/system/'.
Mã:
./configure --with-systemd-dir=/etc/systemd/system/
Bạn sẽ nhận được đầu ra tương tự như sau:
Mã:
------------------------------------------------
guacamole-server phiên bản 1.3.0
------------------------------------------------

 Trạng thái thư viện:

 freerdp2 ............ có
 pango ............. có
 libavcodec .......... có
 libavformat.......... có
 libavutil ........... có
 libssh2 ............. có
 libssl .............. có
 libswscale .......... có
 libtelnet ........... không
 libVNCServer ........ có
 libvorbis ........... có
 libpulse ............ có
 libwebsockets ....... có
 libwebp ............. có
 wsock32 ............. không

 Hỗ trợ giao thức:

 Kubernetes .... có
 RDP ........... có
 SSH ........... có
 Telnet ........ không
 VNC ........... có

 Dịch vụ / công cụ:

 guacd ...... có
 guacenc .... có
 guaclog .... có

 Plugin FreeRDP: /usr/lib/x86_64-linux-gnu/freerdp2
 Tập lệnh khởi tạo: không
 Đơn vị Systemd: /etc/systemd/system/

Gõ "make" để biên dịch guacamole-server.
Xem phần 'Trạng thái thư viện' và 'Hỗ trợ giao thức'. Bạn có thể điều chỉnh hỗ trợ giao thức bằng cách cài đặt các thư viện và phụ thuộc bổ sung.

5. Tiếp theo, biên dịch và cài đặt Guacamole-server bằng cách chạy lệnh bên dưới.
Mã:
make
make install
Quá trình biên dịch và cài đặt có thể mất một thời gian để hoàn tất.

6. Bây giờ, sau khi mọi thứ hoàn tất, hãy chạy lệnh sau để áp dụng tất cả các thư viện hệ thống mới.
Mã:
sudo ldconfig
Trong phần này, bạn đã cài đặt gói Guacamole-server. Tiếp theo, bạn sẽ tạo một số cấu hình cần thiết cho Guacamole-server.

Thiết lập Guacamole-Server​

Để Guacamole-server hoạt động, bạn sẽ tạo thư mục cấu hình '/etc/guacamole/', sau đó tạo tệp mới 'guacamole.properties' làm cấu hình Guacamole-server mặc định, tệp 'logback.xml' cho hệ thống ghi nhật ký Guacamole và tệp 'user-mapping.xml' để xác định xác thực người dùng Guacamole và kết nối với máy chủ và máy tính để bàn từ xa.

1. Để bắt đầu, hãy chạy lệnh sau để tạo thư mục mới '/etc/guacamole/' trong các thư mục bổ sung 'extensions' và 'lib' bên trong. Sau đó thêm biến môi trường 'GUACAMOLE_HOME=/etc/guacamole' vào tệp '/etc/default/tomcat9'. Điều này sẽ yêu cầu bộ chứa servlet Tomcat 9 tra cứu thư mục 'GUACAMOLE_HOME' đến '/etc/guacamole/'.
Mã:
mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9
2. Bây giờ, hãy tạo cấu hình chính 'guacamole.properties' bằng nano hoặc trình soạn thảo bạn thích.
Mã:
sudo nano /etc/guacamole/guacamole.properties
Nhập cấu hình sau:
Mã:
# Tên máy chủ và cổng của proxy guacamole
guacd-hostname: localhost
guacd-port: 4822

# ánh xạ người dùng và kết nối người dùng
user-mapping: /etc/guacamole/user-mapping.xml
  • Tùy chọn 'guacd-hostname' xác định tên máy chủ hoặc địa chỉ IP mà dịch vụ guacd sẽ chạy tại đó. Hướng dẫn này sử dụng localhost để chạy dịch vụ guacd.
  • Tùy chọn 'guacd-port' xác định cổng mặc định cho dịch vụ guacd. Hướng dẫn này sử dụng cổng '4822' cho dịch vụ guacd.
  • Tùy chọn 'user-mapping' xác định cấu hình tệp để xác thực người dùng và danh sách các kết nối khả dụng. Hướng dẫn này sử dụng tệp '/etc/guacamole/user-mapping.xml' để xác định người dùng và kết nối cho Guacamole-server. Bạn có thể quan tâm đến việc sử dụng phương pháp xác thực khác, hãy kiểm tra Tài liệu Guacamole.
Lưu và đóng tệp.

3. Tiếp theo, tạo cấu hình mới 'loogback.xml' để ghi nhật ký và gỡ lỗi. Theo mặc định, Guacamole sẽ chỉ ghi vào bảng điều khiển. Sử dụng cấu hình này cho phép Guacamole ghi nhật ký thông qua khung ghi nhật ký Logback.
Mã:
sudo nano /etc/guacamole/logback.xml
Thêm các dòng cấu hình sau.
Mã:
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
Lưu và đóng tệp cấu hình.

4. Bây giờ, bạn sẽ tạo một băm mật khẩu md5 mới và tạo một tệp mới để xác thực và kết nối người dùng Guacamole.

Chạy lệnh sau để tạo băm mật khẩu md5. Và đảm bảo thay đổi mật khẩu bằng mật khẩu mạnh của bạn.
Mã:
echo -n StrongPasswordUserJohnDoe | openssl md5
Bạn sẽ nhận được đầu ra của mật khẩu băm mod5. Sao chép nó vào ghi chú của bạn.
Mã:
(stdin)= aca22211ffcfb8aa8ad7627195ad4fce
5. Sau đó, tạo một tệp mới 'user-mapping.xml' bằng trình soạn thảo nano.
Mã:
sudo nano /etc/guacamole/user-mapping.xml
Nhập các cấu hình sau. Và đảm bảo thay đổi 'tên người dùng' và 'mật khẩu'. Ngoài ra, hãy xem phần '<connection>...</connection>' và thêm thông tin chi tiết về kết nối của bạn vào máy chủ hoặc máy tính để bàn.
Mã:
ssh
 localhost
 22
 johndoe
 SSHPASSWORD
 

 
 
 vnc
 otherhost
 5900
 VNCPASS
Lưu và đóng tệp.

Bây giờ bạn đã hoàn tất cấu hình Guacamole-server. Tiếp theo, bạn sẽ cài đặt và cấu hình ứng dụng web Guacamole, đây là ứng dụng web bạn sẽ thấy trên trình duyệt của mình.

Cài đặt ứng dụng web Guacamole Client​

Trong phần này, bạn sẽ cài đặt ứng dụng web Guacamole vào hệ thống của mình. Bạn có thể thực hiện việc này bằng cách tải xuống tệp nhị phân đã biên dịch của ứng dụng web Guacamole và triển khai tệp đó vào thư mục 'webaps' của Tomcat.

1. Điều hướng thư mục làm việc của bạn đến '/usr/src' và tải xuống ứng dụng web Guacamole đã biên dịch '.war' bằng lệnh wget. Đảm bảo truy cập trang tải xuống Guacamole và sao chép liên kết cho ứng dụng web Guacamole phiên bản mới nhất.
Mã:
cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war
2. Bây giờ, triển khai ứng dụng nhị phân Java 'guacamole-VERSION.war' vào thư mục Tomcat '/var/lib/tomcat9/webapps/' bằng cách chạy lệnh sau. Lệnh này giúp ứng dụng web Guacamole có thể truy cập được thông qua vùng chứa servlet Apache Tomcat.
Mã:
sudo cp guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war
3. Sau đó, khởi động lại dịch vụ Tomcat 9 để áp dụng ứng dụng web mới.
Mã:
sudo systemctl restart tomcat9
4. Tiếp theo, khởi động và kích hoạt dịch vụ 'guacd' bằng cách chạy lệnh bên dưới.
Mã:
sudo systemctl enable --now guacd
Sau đó, xác minh bằng lệnh sau.
Mã:
sudo systemctl status guacd
Bạn sẽ nhận được đầu ra như ảnh chụp màn hình bên dưới.



Tại thời điểm này, bạn đã hoàn tất cài đặt ứng dụng Guacamole-server (phần phụ trợ) và ứng dụng web Guacamole (phần giao diện). Tiếp theo, bạn sẽ thiết lập Nginx làm proxy ngược cho ứng dụng web Guacamole.

Thiết lập proxy ngược Nginx cho Guacamole​

Trong phần này, bạn sẽ cài đặt máy chủ web Nginx và định cấu hình nó làm proxy ngược cho ứng dụng web Guacamole. Điều này cho phép bạn thiết lập tên miền cho ứng dụng web Guacamole của mình và bảo mật nó bằng chứng chỉ SSL.

1. Để bắt đầu, hãy chạy lệnh 'apt' sau để cài đặt các gói Nginx.
Mã:
sudo apt install nginx -y
2. Sau khi tất cả các gói Nginx được cài đặt, hãy tạo một tệp máy chủ ảo mới 'guacamole' trong thư mục '/etc/nginx/sites-available'. Tất cả các cấu hình liên quan đến proxy ngược Guacamole sẽ được lưu trữ trong tệp này.
Mã:
sudo nano /etc/nginx/sites-available/guacamole
Nhập cấu hình sau. Và đảm bảo thay đổi tên miền và đường dẫn của chứng chỉ SSL. Ví dụ này sử dụng tên miền 'example.io' với khóa riêng SSL 'privkey.pem' và khóa công khai 'fullchain.pem' và chứng chỉ bot có sẵn tại thư mục '/etc/letsencrypt/live/exmaple.io/'.
Mã:
server {
 listen 80;
 server_name example.io;
 rewrite ^ https://$server_name$request_uri? vĩnh viễn;
}

máy chủ {
 lắng nghe 443 ssl http2;
 tên máy chủ example.io;

 gốc /var/www/html;
 chỉ mục index.html;

 vị trí / {
 try_files $uri $uri/ =404;
 }

 chứng chỉ ssl /etc/letsencrypt/live/example.io/fullchain.pem;
 khóa chứng chỉ ssl /etc/letsencrypt/live/example.io/privkey.pem;

 nhật ký truy cập /var/log/nginx/guacamole-access.log;
 nhật ký lỗi /var/log/nginx/guacamole-error.log;

 vị trí /guacamole/ {
 mật khẩu proxy http://127.0.0.1:8080/guacamole/;
 proxy_buffering tắt;
 proxy_http_version 1.1;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header Nâng cấp $http_upgrade;
 proxy_set_header Kết nối $http_connection;
 access_log tắt;
 }
}
Lưu và đóng tệp.

3. Bây giờ, hãy kích hoạt tệp máy chủ ảo 'guacamole' bằng cách tạo liên kết tượng trưng mới đến thư mục '/etc/nginx/sites-enabled/'. Sau đó, hãy xác minh tất cả các cấu hình Nginx để kiểm tra xem có lỗi cú pháp nào không.
Mã:
sudo ln -s /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
sudo nginx -t
Bạn sẽ nhận được đầu ra 'Cú pháp OK', nghĩa là cấu hình không có lỗi.



4. Tiếp theo, hãy khởi động lại dịch vụ Nginx để áp dụng cấu hình mới, sau đó xác minh trạng thái của nó bằng cách chạy lệnh sau.
Mã:
sudo systemctl restart nginx
sudo systemtl status nginx
Bạn sẽ nhận được đầu ra tương tự như ảnh chụp màn hình bên dưới. Dịch vụ Nginx đang 'hoạt động (đang chạy)'.



5. Ngoài ra, nếu bạn muốn triển khai ứng dụng web Guacamole trong URL phụ khác, hãy thay đổi tùy chọn 'location /guacamole/ { ... }' thành đường dẫn mới 'location /new-path/ { ... }' và thêm tùy chọn 'proxy_cookie_path' vào đường dẫn mới của bạn như bên dưới.
Mã:
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 Nâng cấp $http_upgrade;
 proxy_set_header Kết nối $http_connection;
 proxy_cookie_path /guacamole/ /new-path/;
 access_log tắt;
}
Trong phần này, bạn đã hoàn tất cài đặt và cấu hình Nginx làm proxy ngược cho ứng dụng web Guacamole. Tại thời điểm này, cài đặt Apache Guacamole của bạn đã hoàn tất và có thể truy cập từ tên miền của bạn.

Xác minh cài đặt Apache Guacamole​

Trong phần này, bạn sẽ xác minh cài đặt Apache Guacamole.

Trước tiên, hãy mở trình duyệt web của bạn và nhập tên miền cho cài đặt Guacamole của bạn với đường dẫn mặc định là '/guacamole'.

https://example.io/guacamole/

Bây giờ, bạn sẽ thấy trang đăng nhập Guacamole bên dưới. Nhập tên người dùng và mật khẩu mà bạn đã cấu hình trong tệp 'user-mapping.xml', sau đó nhấp vào nút Đăng nhập.



Sau khi đăng nhập, bạn sẽ thấy danh sách các kết nối đã xác định cho người dùng của mình.



Nhấp vào tên kết nối để kết nối với máy chủ mục tiêu. Ví dụ này sẽ kết nối với máy chủ cục bộ bằng giao thức SSH.

Bây giờ, bạn sẽ thấy phiên thiết bị đầu cuối ssh mới trên máy chủ của mình.


Kết luận​

Xin chúc mừng! Trong hướng dẫn này, bạn đã học cách cài đặt Apache Guacamole trên Debian 11 Bullseye. Ngoài ra, bạn đã học cách thiết lập xác thực người dùng và kết nối bằng tệp cấu hình 'user-mapping.xml' và thiết lập Nginx làm proxy ngược cho ứng dụng web Guacamole, cho phép bạn chạy Guacamaloe bằng tên miền và bảo mật bằng chứng chỉ SSL.
 
Back
Bên trên