English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

شرح مفصل لضبط سطح المكتب عن بعد vnc/vnc-server في CentOS7

Centos7与Centos6.x有了很大的不同。

为了给一台服务器装上远程桌面,走了不少弯路。写这篇博文,纯粹为了记录,以后如果遇到相同问题,可以追溯。

1、假定你的系统没有安装vnc的任何软件,那么,首先安装vnc

yum -y install tigervnc-server tigervnc

2、Centos7之前的系统,如果安装vnc一般都需要配置

[root@localhost ~]# cat /etc/sysconfig/vncservers 
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/[email protected]

但是,如上所述,Centos7需要配置的文件在

[root@localhost ~]# ll /lib/systemd/system/[email protected]
-rw-r--r--. 1 root root 1744 Jun 10 14:15 /lib/systemd/system/[email protected]

3、文件内有如下提示

# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service
# 2. Edit <USER> and vncserver parameters appropriately
#  ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service

4、复制一份文件,并改名为vncserver@:1.service

[root@localhost ~]# cp /lib/systemd/system/[email protected]/lib/systemd/system/vncserver@:1.service

5、将文件中的<User>用你当前的用户替换,将%i替换为1

[Unit]
Description=خدمة سطح مكتب عن بعد (VNC)
After=syslog.target network.target
[Service]
Type=forking
# تنظيف أي ملفات موجودة في بيئة /tmp/.X11-unix
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver :1 -geometry 1280x720 -depth 24"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill :1 > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target

6- تحديث systemctl

systemctl daemon-reload

7- قم بتعيينها للبدء التلقائي

systemctl enable vncserver@:1.service

8- قم ببدء خدمة vnc

systemctl start vncserver@:1.service

9- أضف المنفذ المطلوب 5901 إلى iptables (لاحظ، إذا كان هناك مستخدمون آخرون، يجب أيضًا إضافة المنفذ. منفذ vnc هو 5900 + n بشكل افتراضي)

[root@localhost system]# cat /etc/sysconfig/iptables
# تكوين نموذجي لخدمة iptables
# يمكنك تعديل هذا يدويًا أو استخدام system-config-firewall
# لا تدعونا نضيف منافذ/خدمات إضافية إلى هذا التكوين الافتراضي
*مصفى
:قبول الدخول [0:0]
:مقدمة تقبّل [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

ملاحظة:

1- إذا لم تقم بتهيئة وتشغيل جدار الحماية، فإن الاتصال باستخدام VNC Viewer سيؤدي إلى ظهور خطأ: "connect: Connection timed out(10060)"

2- هذا المقال يعتمد على المستخدم root، إذا كان المستخدمون الآخرون بحاجة إلى الدخول، فيجب أيضًا نسخ الملف

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

في نفس الوقت، قم بتعديل %i إلى 2، وأقم بإنشاء vncpasswd للمستخدم المطلوب

3- يمكنك الوصول من خلال UltraVNC، TigerVNC أو RealVNC Viewer، استخدمت هذه الأدوات الثلاث على win7 وتمكنت من الاتصال بها

شكرًا على القراءة، آمل أن تكون قد ساعدتكم، شكرًا لدعمكم لموقعنا!

أنت قد تحب