Huướng dẫn sử dụng linux centos 7

REMOTE LOGIN VỚI GIAO DIỆN ĐỒ HỌA TRONG CENTOS 7

Trong ngày thứ 5 này ta có vẻ như quay lại như mới bắt đầu một chút nhưng thực tế thì không hẳn. Linux mạnh vì giao diện dòng lệnh nhưng nếu không biết đến giao diện đồ họa trên Linux thì ta gần như đang bỏ qua một trải nghiệm hết sức thú vị với GUI interface nổi tiếng của Linux là GNOME và KDE. Hơn thế nữa, qua nhiều năm kinh nghiệm làm việc với khách hàng thuê vps, 1Hosting thấy rằng vẫn có rất nhiều khách hàng chỉ có thể thao tác với giao diện đồ họa như Windows mà không thể nhớ các câu lệnh của Linux. Không sao cả, Centos 7 sẽ chiều lòng những khách hàng khó tính nhất.

Công nghệ ngày càng phát triển, cũng giống như công nghệ ảo hóa, công nghệ remote từ xa vào máy chủ Linux cũng không ngừng cho ra những sản phẩm mới. Nếu trước đây ta chỉ loanh quanh với VNC thì hiện nay, trên máy tính mà đa số người dùng vẫn sử dụng là Windows desktop, ta có thể sử dụng luôn chương trình Remote Desktop hoặc hơn nữa là Teamview rất tiện dụng.

Trong ngày thứ 5 này, ta sẽ tìm hiểu những kỹ thuật từ đơn giản nhất đến phức tạp nhất để cài đặt cho con máy chủ ảo Cloud VPS thân yêu cùa mình có những tính năng giống như 1 Desktop Server. Nhưng trước đó ta cần cài đặt 2 thành phần cơ bản:

       1. Các gói GNOME trên Centos 7 Server với lệnh sau:

        yum groupinstall "Server with GUI"

       2. Xming Server trên máy tính Windows client ta đang sử dụng

Bước tiếp theo là cái đặt EPEL repository, thường là cái này đã có trong các phần trước của bài học theo ngày

        yum -y install epel-release

1.  XRDP SERVER

Phải nói là với phương thức này, việc thực hiện là vô cùng đơn giản khi ta chỉ cần một vài lệnh setup là xong. XRDP Remote Desktop Server là một service hoặc daemon cho phép sử dụng giao thức RDP trên Linux. XRDP sử dụng x11rdp ở backend để manage các X Sessions. XRDP an toàn hơn VNC thông thường khi kết nối nó sử dụng các RSA Public Key và Private key để transfer dữ liệu. 

Nào, ta hãy cài các gói sau:

yum -y install xrdp tigervnc-server

Và start Remote Desktop Server giả lập trên Centos 7

systemctl start xrdp.service

Kiểm tra lại bằng lệnh:

netstat -antup | grep xrdp

Nếu được như sau là chuẩn:

netstat -antup | grep xrdp
tcp 0 0 127.0.0.1:3350 0.0.0.0:* LISTEN 2607/xrdp-sesman 
tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN 2608/xrdp 

Enable xRDP service lúc hệ thống khởi động

systemctl enable xrdp.service

Sau đó mở firewall port 3389 nếu hệ thống sử dụng firewalld

# firewall-cmd --permanent --zone=public --add-port=3389/tcp
# firewall-cmd --reload

Và cấu hình lại SELinux nếu SELinux đã enable, còn nếu đã để SELinux= disabled thì không cần nữa

# chcon --type=bin_t /usr/sbin/xrdp
# chcon --type=bin_t /usr/sbin/xrdp-sesman

Mở remote desktop trên máy tính Windows và gõ địa chỉ IP vào, kết nối như kết nối Remote Desktop vào một  Windows Server thông thường.

Huướng dẫn sử dụng linux centos 7

Sau đó điền user và password

Huướng dẫn sử dụng linux centos 7

Và Login với giao diện GNOME rất đẹp

Huướng dẫn sử dụng linux centos 7

2. VNC SERVER

VNC là một kỹ thuật khác để thực hiện việc remote Login vào Linux server, tuy nhiên nó cũng chỉ dựa trên giao thức client-server truyền thống. VNC hoạt động hơi khác một chút so với những chương trình khác, đó là nó sinh ra 1 VNC service daemon mỗi khi có một user login. Trong ngày hôm nay, ta sẽ thực hiện kết nối VNC với các user khác nhau. Trước tiên ta tạo 02 user trên hệ thống

useradd -c "User Admin Configured for VNC Access" admin

useradd -c "User Boss Configured for VNC Access" boss

Tiếp đó là cài gói VNC Server

yum install -y tigervnc-server

Sau khi đã có VNC Server và GNOME desktop, ta kiểm tra lại như sau:

systemctl status vncserver@:.service

Ta sẽ thấy :

vncserver@:.service - Remote desktop service (VNC)
 Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled)
 Active: inactive (dead)

Tại sao lại là “Inactive”? Lý do là vì Centos 7 sử dụng systemd daemon để khởi động các services khác nhau, mỗi service nằm dưới systemd  có một service unit file nằm trong thư mục /lib/systemd/system và được link đến các file trong thư mục /etc/systemd/system có nhiệm vụ start services lúc khởi động.

Trong trường hợp này, ta thấy một unit file chung đã được tạo trong thư mục /lib/systemd/system nhưng chưa có link nào liên kết đến /etc/systemd/system/

ls -l /lib/systemd/system/vnc*

-rw-r--r--. 1 root root 1744 Jun 10 16:15 /lib/systemd/system/[email protected]

Check thư mục /etc/systemd/system/

ls -l /etc/systemd/system/*.wants/vnc*

sẽ thấy như sau:

ls: cannot access /etc/systemd/system/*.wants/vnc*: No such file or directory

Ta sẽ sửa lại như sau:

cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:5.service

cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:6.service

VNC mặc định chạy trên cổng 5900 nhưng mỗi khi có một kết nối đến, nó sẽ sử dụng một port riêng biệt là 5900 + 5 và 5900 + 6 tương ứng với số ta đã tạo ở service unit file ở trên. Ta sẽ edit các service unit file như sau:

vi /etc/systemd/system/vncserver@:5.service

Các thông số cần chú ý là màu đỏ:

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l admin -c "/usr/bin/vncserver %i -geometry 1280x1024" 
PIDFile=/home/admin/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

Save & exit, đồng thời làm tương tự cho user boss ở unit file 6

Sau đó reload lại systemd

systemctl daemon-reload

Và Enable cho từng instance:

systemctl enable vncserver@:5.service

systemctl enable vncserver@:6.service

Vậy là ta đã cấu hình xong 2 VNC instance

Lúc này ta cần cấu hình password để login cho 02 user ở trên để kết nối vào VNC Server, chú ý đây không phải là password của Linux user mà là password được VNC Server setup. Để làm như vậy ta cần login SSH vào bằng chính 02 user trên. Sau khi login được vào, ta chạy lệnh sau:

vncserver

Đánh password mới vào và chả cần để ý thông báo gì sinh ra ngoài việc nhìn thấy dòng như sau:

You will require a password to access your desktops.

Password:
Verify:
xauth: file /home/admin/.Xauthority does not exist

New 'localhost.localdomain:1 (admin)' desktop is localhost.localdomain:1

Creating default startup script /home/admin/.vnc/xstartup
Starting applications specified in /home/admin/.vnc/xstartup
Log file is /home/admin/.vnc/localhost.localdomain:1.log

Reload lại các instance để mọi thứ có tác dụng

systemctl daemon-reload
systemctl restart vncserver@:5.service
systemctl restart vncserver@:6.service

Tiếp theo ta sẽ download và cài đặt chương trình VNC View trên máy tính Windows của mình để chuẩn bị kết nối vào VNC Server cài trên Centos 7.

Khởi động VNC Viewer và điền thông tin của VNC Server cùng với port kết nối tương ứng với user đã tạo ở trên

Huướng dẫn sử dụng linux centos 7

Gõ password của VNC user

Huướng dẫn sử dụng linux centos 7

Và kết quả thật tuyệt vời

Huướng dẫn sử dụng linux centos 7

Đến đây, về cơ bản là ta đã hoàn tất công việc, tuy nhiên kết nối VNC hiện tại theo mặc định là các kết nối không được mã hóa nên độ an toàn trở nên khá kém, chính vì thế ta cần làm thêm 1 bước là đưa các connection này vào SSH Tunnel. Với SSH, các VNC session được mã hóa và ta gọi nó là Tunnel. Bản chất của Tunnel là SSH sẽ tạo lớp bảo vệ bên ngoài cho các kết nối VNC, các VNC connection di chuyển trong 1 ống dẫn là SSH, kỹ thuật này cũng có thể được sử dụng cho các giao thức khác như POP, X, IMAP.

SSH Tunnel làm việc với port forwarding, về cơ bản là một phương thức chuyển đổi truy nhập từ một port cụ thể sang port khác trên cùng máy tính mà ứng dụng client không hề biết được việc này 

Với user admin ở trên, ta sẽ sử dụng Putty với cách cấu hình như sau:

Huướng dẫn sử dụng linux centos 7

Tiếp theo là X11 Forwarding

Huướng dẫn sử dụng linux centos 7

Cuối cùng là setup thông số của instance cho Tunnel

Huướng dẫn sử dụng linux centos 7

Và kết nối SSH với password của user admin ở trên là password trên hệ thống Centos 7, không phải password của VNC Server. Đây là điều rất đáng chú ý ở bước 3 này.

Bây giờ, sau khi đã login SSH vào được, cứ để Putty ở đó, ta mở lại VNC Viewer và kết nối lại. Ta vẫn thấy VNC báo “Unencrypted Connection“, đó là bới vì VNC Viewer không hể biết port đã được forward và vẫn nghĩ là đang kết nối vào local nhưng thực chất SSH Tunneling đã đảm bảo an toàn cho kết nối này.

Vậy là ta đã hoàn thành việc kết nối, sử dụng giao diện đồ họa trên VPS cài đặt Centos 7 bằng 2 cách khác nhau trong ngày số 5 này. Sẽ có rất nhiều ứng dụng bắt buộc phải cài đặt, khởi động ở chế độ đồ họa này như Oracle hay Teamview, chính vì thế việc làm chủ kỹ thuật này sẽ giúp ta xử lý được mọi tình huống phát sinh mà không gặp trở ngại đáng kể nào.