Cho phép nhiều người dùng đăng nhập với VNC
Các kiến trúc VNC và X server
Linux® sử dụng Hệ thống Window X (gọi tắt là X ) là giao diện người dùng đồ họa (GUI). X là
một GUI khác thường theo nhiều cách, một trong số đó là nó vốn dĩ là một mạng lưới được kích
hoạt. Một X server (X server) theo nghĩa đen là một chương trình máy chủ mạng. Các chương
trình máy chủ mạng cung cấp cho các trình máy khách (client) truy cập vào các tài nguyên cục
bộ và điều này cũng đúng với một X server. Điều lạ lùng là ở chỗ "các tài nguyên cục bộ" trong
trường hợp của một X server là màn hình hiển thị, bàn phím và chuột, mà người dùng sử dụng.
Trong hầu hết cấu hình phổ biến, các X client chạy trên cùng một máy tính nơi trình máy chủ
chạy. Như vậy, LibreOffice, GIMP (GNU Image Manipulation Program – Chương trình thao tác
ảnh GNU) hoặc các chương trình khác là các X server, mà nó sử dụng các giao thức mạng của X
để nhận đầu vào người dùng và hiển thị kết quả đầu ra cho những người dùng trên cùng một máy
tính.
Tuy nhiên, khi X được sử dụng trên một mạng thì người dùng ngồi tại máy tính chạy X server và
các X client chính là các chương trình mà người dùng muốn chạy trên một máy tính khác. Cấu
hình này đòi hỏi một giao thức mạng thứ hai để khởi đầu kết nối. Giao thức thứ hai này có thể là
telnet, Secure Shell (SSH) hoặc XDMCP. Trình máy chủ cho giao thức đăng nhập này chạy trên
máy tính của X client và trình máy khách đăng nhập từ xa chạy trên máy tính của X server. Trình
máy chủ đăng nhập từ xa khởi chạy các X client, mà các trình X client này lần lượt liên hệ với X
server. Hình 1 mô tả mối quan hệ này. Các mũi tên nét đứt biểu thị sự bắt đầu của phiên làm
việc. (Trong trường hợp của XDMCP, X clientDMCP được gắn vào chương trình X server).
Hình 1. Truy cập từ xa X đòi hỏi một trình máy khách và một trình máy chủ trên cả hai
máy tính
Kiểu thiết lập này hoạt động tốt trên nhiều mạng cục bộ, nhưng nó có nhược điểm. Ví dụ, cấu
hình này yêu cầu phải khởi đầu giao thức mạng hai chiều, mà có lẽ giao thức này không thể thực
hiện được xuyên qua một số tường lửa hoặc các bộ định tuyến dịch địa chỉ mạng (NAT). (SSH
có thể tạo đường hầm cho các phiên làm việc X, tránh được yêu cầu này). Hơn nữa, mặc dù các
X server có sẵn cho hầu hết các nền tảng, nhưng chúng thường không được cài đặt trên các máy
tính chạy hệ điều hành Windows®. Vì các lý do này và khác, nhiều trang web thích sử dụng một
Về đầu trang
Cấu hình VNC server của bạn
Có một số cách để khởi chạy VNC, bao gồm việc sử dụng các kịch bản lệnh, kết nối VNC vào
môi trường máy tính để bàn của bạn bằng cách sử dụng các công cụ máy tính để bàn và sử dụng
xinetd để nghe các kết nối VNC. Cách tiếp cận thứ hai này là cách được mô tả ở đây, vì nó cho
phép bạn khởi chạy VNC sao cho nó có thể sử dụng XDMCP server của bạn. Trước khi đi vào
chi tiết cách cấu hình VNC để khởi chạy thông qua xinetd, bạn phải chọn một VNC server.
Chọn một VNC server
Có sẵn một số trình VNC server. (Phần Tài nguyên cung cấp một số chương trình điển hình).
Một số chương trình trong số các tùy chọn phổ biến hơn gồm có TightVNC, TigerVNC và
RealVNC. Bài viết này sử dụng TightVNC làm một ví dụ. Thật không may, thông tin chi tiết về
cấu hình thay đổi với mỗi trình máy chủ là khác nhau cũng như mỗi bản phân phối cũng khác
nhau, nên có thể bạn cần phải điều chỉnh các hướng dẫn được cung cấp ở đây cho đúng với phần
mềm của mình.
Cài đặt xinetd
Nhiều bản phân phối cài đặt siêu máy chủ xinetd theo mặc định, nhưng một số thì không. Vì
phương pháp mô tả ở đây sử dụng xinetd, nên bạn cần cài đặt xinetd nếu nó chưa được cài đặt.
Trên hầu hết các bản phân phối, bạn có thể cài đặt xinetd bằng cách sử dụng hệ thống đóng gói,
chẳng hạn như apt-get install xinetd trên các bản phân phối dựa trên Debian hoặc zypper
install xinetd trên openSUSE.
Bạn cũng có thể cần cấu hình xinetd để chạy. Bạn thường có thể chạy nó mỗi khi cần đến bằng
cách sử dụng kịch bản lệnh khởi động System V (SysV) của nó:
#
/etc/init.d/xinetd startViệc cấu hình xinetd để chạy tự động khi máy tính khởi động đòi hỏi phải có kiến thức về các
phương pháp kịch bản lệnh khởi động cho bản phân phối của bạn. Thông thường, bạn sử dụng
một tiện ích như chkconfig (thường dùng trong Fedora, openSUSE và các bản phân phối có liên
quan), update-rc.d (thường dùng trong bản phân phối Debian và các bản phân phối có liên
type = UNLISTED
port = 5900
}
Mục này thiết lập một số tùy chọn xinetd, hầu hết trong số đó bạn nên giữ nguyên. Những tùy
chọn mà bạn có thể cần điều chỉnh bao gồm như sau:
service (dịch vụ). Bạn có thể chạy VNC trên nhiều cổng với các tùy chọn khác nhau
trên mỗi cổng, nhưng nếu bạn làm như vậy, bạn nên cung cấp cho VNC một tên dịch vụ
khác nhau cho mỗi cổng ở dòng đầu tiên trong Liệt kê 1.
server (trình máy chủ). Bạn nên thay đổi mục này trỏ tới tệp nhị phân chính của VNC
server của bạn, tệp này thường có tên là Xvnc.
server_args (các đối số của trình máy chủ). Bạn sẽ gần như chắc chắn muốn thay đổi
một số trong các tùy chọn này, như được mô tả ngay sau đây.
port (cổng). VNC sử dụng các cổng được đánh số từ 5900 trở lên. Bạn có thể chạy trình
máy chủ với các tùy chọn khác nhau trên các cổng khác nhau. Nếu bạn làm như vậy, bạn
nên gán cho mỗi cá thể số cổng riêng của mình.
Phần khó khăn nhất trong cấu hình xinetd là thiết lập các đối số của trình máy chủ. Bạn có thể
sử dụng các đối số trong Liệt kê 1 làm mẫu, nhưng bạn có thể muốn thay đổi một số trong số
chúng:
-query localhost. Tùy chọn này nói cho VNC X server kiểm tra hệ thống localhost để
xác thực XDMCP. Bạn có thể thay đổi nó nếu bạn muốn sử dụng một máy tính như là
một trạm chuyển tiếp (relay) để truy cập các chương trình trên một máy tính khác.
-geometry 1024x768. Bạn thiết lập độ phân giải ảo của phiên làm việc VNC với tùy
chọn này. Lưu ý rằng độ phân giải này không cần phải giống như độ phân giải của X
server thông thường chạy trên máy tính của trình máy chủ . Bạn có thể muốn tạo ra nhiều
mục chạy ở các độ phân giải khác nhau để cho phép người dùng đăng nhập vào VNC
server trong khi sử dụng bất kỳ độ phân giải nào thuận tiện cho các hệ thống cục bộ riêng
của họ.
-depth 16. Tùy chọn này để thiết lập độ sâu của màu. Giá trị thấp hơn có thể đưa ra các
bản cập nhật hiển thị nhanh hơn, nhưng các môi trường máy tính để bàn 15bit/16 bit màu
enable=true. Bảng 1 tóm tắt các tên tệp cấu hình, các tên phần và các tùy chọn mà bạn phải
thiết lập để cho phép XDMCP chạy trên một số XDMCP server Linux phổ biến.
Bảng 1. Các tùy chọn cho phép XDMCP hỗ trợ VNC với các XDMCP server khác nhau
Trình ứng dụng chủ XDMCP Tên tệp cấu hình Tên phần Tùy chọn
GDM /etc/X11/gdm/custom.conf
[xdmcp]
enable=true
KDM /usr/share/kde4/config/kdm/kdmrc
[Xdmcp]
Enable=true
LightDM /etc/lightdm/lightdm.conf
[XDMCPServer]enabled=true
Bạn có thể tìm thấy phần XDMCP trong tệp cấu hình của mình hoặc nó có thể hoàn toàn không
có. Nếu có, nó phải rõ ràng vô hiệu hóa sự hỗ trợ XMDCP, gồm các tùy chọn bị đặt dấu chú
thích hoặc để rỗng. Bất kể trạng thái của tệp ban đầu như thế nào, bạn cần bảo đảm rằng có mặt
phần XDMCP và đã cho phép sự hỗ trợ này. Ví dụ, hãy xem xét một cấu hình KDM để cho phép
XDMCP:
[Xdmcp]
Enable=true
Một số bản phân phối cho phép thêm các biện pháp bảo đảm an toàn mà bạn có thể phải nới
lỏng. Một trong số đó là tường lửa. Các kịch bản lệnh tường lửa có xu hướng là đặc trưng của
từng bản phân phối, do đó hãy tham khảo tài liệu hướng dẫn trong hệ thống của bạn để tìm hiểu
cách thay đổi tường lửa của bạn. Bạn nên bảo đảm localhost có quyền truy cập đến cổng 177 và
Kiểm tra và gỡ lỗi cấu hình
Tại thời điểm này, bạn sẽ có thể đăng nhập từ một máy tính từ xa bằng cách sử dụng một trình
VNC client. Ví dụ, hầu hết các bản phân phối Linux đều cung cấp một lệnh tên là vncviewer;
bạn có thể gõ:
vncviewer
remotename. . . để đăng nhập vào remotename (tên ở xa) thông qua VNC. Khi VNC được cấu hình và làm
việc đúng, kết quả giống như Hình 4. Nếu bạn đã cấu hình nhiều phiên làm việc VNC trên các
cổng khác nhau, bạn có thể chỉ rõ số phiên VNC bằng cách thêm số phiên này vào như một phần
của hostname (tên máy chủ), như trong:
vncviewer
remotename
:3. . . để đăng nhập vào phiên 3 (trên cổng 5903).
Hình 4. Khi được cấu hình để làm việc với XDMCP, VNC cung cấp một dấu nhắc đăng
nhập Linux truyền thống
Nếu bạn không nhìn thấy một màn hình đăng nhập XDMCP khi bạn thực hiện việc kiểm tra này,
có thể bạn cần phải sửa một số lỗi. Một số thứ cần kiểm tra gồm có:
Nếu vncviewer báo cáo rằng kết nối bị từ chối, điều đó rất có thể có nghĩa là siêu máy
chủ không được cấu hình đúng trên máy tính của VNC server. Hãy xem xét lại cấu hình
xinetd của bạn và cố gắng khởi động lại siêu máy chủ. Cũng có thể là một tường lửa
đang chặn truy cập vào máy tính của VNC server.
Nếu VNC client khởi chạy và kết nối đến trình máy chủ nhưng tất cả những gì bạn nhìn
thấy là một màn hình màu xám với một con trỏ mà bạn có thể di chuyển qua lại, có lẽ có