不研究 發表於 2023-10-2 00:00:00

Centos7远程桌面 vnc/vnc-server的设置详解

<p>
        <strong>Centos7与Centos6.x有了很大的不同。</strong></p>
<p>
        为了给一台服务器装上远程桌面,走了不少弯路。写这篇博文,纯粹为了记录,以后如果遇到相同问题,可以追溯。</p>
<p>
        1、假定你的系统没有安装vnc的任何软件,那么,首先安装vnc</p>
<p>
        <span>yum -y install tigervnc-server tigervnc</span></p>
<p>
        2、Centos7之前的系统,如果安装vnc一般都需要配置</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_183550">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"></code><code class="bash comments"># cat /etc/sysconfig/vncservers </code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash comments"># THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        但是,如上所述,Centos7需要配置的文件在</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_27437">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"></code><code class="bash comments"># ll /lib/systemd/system/vncserver@.service</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">-rw-r--r--. 1 root root 1744 Jun 10 14:15 </code><code class="bash plain">/lib/systemd/system/vncserver</code><code class="bash plain">@.service</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        3、文件内有如下提示</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_815765">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash comments"># Quick HowTo:</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash comments"># 1. Copy this file to /etc/systemd/system/vncserver@:&lt;display&gt;.service</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash comments"># 2. Edit &lt;USER&gt; and vncserver parameters appropriately</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash comments">#  ("runuser -l &lt;USER&gt; -c /usr/bin/vncserver %i -arg1 -arg2")</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash comments"># 3. Run `systemctl daemon-reload`</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash comments"># 4. Run `systemctl enable vncserver@:&lt;display&gt;.service</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        4、复制一份文件,并改名为vncserver@:1.service</p>
<p>
        <span># cp </span><span>/lib/systemd/system/vncserver@.service</span><span>/lib/systemd/system/vncserver@:1.service</span></p>
<p>
        5、将文件中的&lt;User&gt;用你当前的用户替换,将%i替换为1</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_844643">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"></code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">Description=Remote desktop service (VNC)</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">After=syslog.target network.target</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain"></code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">Type=forking</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash comments"># Clean any existing files in /tmp/.X11-unix environment</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">ExecStartPre=</code><code class="bash plain">/bin/sh</code> <code class="bash plain">-c </code><code class="bash string">'/usr/bin/vncserver -kill :1 &gt; /dev/null 2&gt;&amp;1 || :'</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">ExecStart=</code><code class="bash plain">/sbin/runuser</code> <code class="bash plain">-l root -c </code><code class="bash string">"/usr/bin/vncserver :1 -geometry 1280x720 -depth 24"</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">PIDFile=</code><code class="bash plain">/root/</code><code class="bash plain">.vnc/%H%i.pid</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash plain">ExecStop=</code><code class="bash plain">/bin/sh</code> <code class="bash plain">-c </code><code class="bash string">'/usr/bin/vncserver -kill :1 &gt; /dev/null 2&gt;&amp;1 || :'</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain"></code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash plain">WantedBy=multi-user.target</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        6、更新systemctl</p>
<p>
        <span>systemctl daemon-reload</span></p>
<p>
        7、设置为自动启动</p>
<p>
        <span>systemctl enable vncserver@:1.service</span></p>
<p>
        8、启动vnc服务</p>
<p>
        <span>systemctl start vncserver@:1.service</span></p>
<p>
        9、在iptables中加入对应的端口5901(注意,如果有其他用户,那么也需要将端口加上。vnc的端口默认是5900 + n)</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_939305">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"></code><code class="bash comments"># cat /etc/sysconfig/iptables</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash comments"># sample configuration for iptables service</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash comments"># you can edit this manually or use system-config-firewall</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash comments"># please do not ask us to add additional ports/services to this default configuration</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">*filter</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">:INPUT ACCEPT </code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">:FORWARD ACCEPT </code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">:OUTPUT ACCEPT </code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash plain">-A INPUT -p icmp -j ACCEPT</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain">-A INPUT -i lo -j ACCEPT</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash plain">-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash plain">-A INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash plain">-A INPUT -j REJECT --reject-with icmp-host-prohibited</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="bash plain">-A FORWARD -j REJECT --reject-with icmp-host-prohibited</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="bash plain">COMMIT</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span>注意:</span></p>
<p>
        1、如果你不配置和启用防火墙,此时用VNC Viewer连接的话,会报:"connect:Connection timed out(10060)"错误。</p>
<p>
        2、本文是以root用户为例,如果其他用户也需要登录,那么,还需要将文件复制为</p>
<p>
        <span>cp </span><span>/lib/systemd/system/vncserver@.service</span><span>/lib/systemd/system/vncserver@:2.service</span></p>
<p>
        同时,将文件内的%i改为2,并建立对应用户的vncpasswd。</p>
<p>
        3、你可以通过UltraVNC,TigerVNC或者RealVNC Viewer进行访问,我在win7下使用这3中工具均能连接</p>
<p>
        感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!</p>
頁: [1]
查看完整版本: Centos7远程桌面 vnc/vnc-server的设置详解