web-dev-qa-db-ja.com

VNCサーバーはlocalhostからの接続のみをリッスンします

Raspberry Pi 2 B +のRaspbian(9月2.017バージョン)にTightVNCServerをインストールしました。

luis@Frambuesio:~$  vncserver -name Frambuesio -geometry 1280x1024 -depth 16

New 'Frambuesio' desktop at :1 on machine Frambuesio

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/luis/.vnc/Frambuesio:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/luis/.vnc/passwd :1 to connect to the VNC server.

luis@Frambuesio:~$ netstat -ano | grep "5901"
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 ::1:5901                :::*                    LISTEN      off (0.00/0/0)

しかし、私のVNCビューア(リモートWindowsマシンのRealVNCから)が接続しようとすると「Connection refused」というメッセージを受け取り、ポートが見えない聞いている:

luis@Hipatio:~$ Sudo nmap Frambuesio- -p 5900,5901,5902
[Sudo] password for luis:

Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-18 16:58 CEST
Nmap scan report for Frambuesio- (192.168.11.142)
Host is up (0.00050s latency).
PORT     STATE  SERVICE
5900/tcp closed vnc
5901/tcp closed vnc-1
5902/tcp closed vnc-2
MAC Address: B8:27:EB:7D:7C:B0 (Raspberry Pi Foundation)

Nmap done: 1 IP address (1 Host up) scanned in 0.67 seconds

別のRaspberry PiでUbuntu16.04.3から試した場合、すべてがうまくいきます(異なるnetstat結果に注意してください):

luis@Zarzaparrillo:~$ vncserver -name Zarzaparrillo -geometry 1280x1024 -depth 16

New 'Zarzaparrillo' desktop is Zarzaparrillo:1

Starting applications specified in /home/luis/.vnc/xstartup
Log file is /home/luis/.vnc/Zarzaparrillo:1.log

luis@Zarzaparrillo:~$ netstat -ano | grep 5901
tcp6       0      0 :::5901                 :::*                    LISTEN      off (0.00/0/0)

VNC4Serverと同じ結果。

realvnc-vnc-serverパッケージのインストールに関する 公式Raspberryペーパー を読みました。しかし、RealVNCプログラムは大量の追加パッケージをインストールし、教育目的で無料であってもオープンソースではありません。私のVNCには、エンタープライズの本番環境で使用できる限り、GNUのよりオープンなポリシーをいくつか使用したいと思います。

私の回避策は今のところX11vncを使用して別のディスプレイにサービスを提供することで構成されていますポート:

luis@Frambuesio:~$  vncserver -name Frambuesio -geometry 1280x1024 -depth 16

[... on another terminal: ]
luis@Frambuesio:~$ Sudo x11vnc -display :1 -passwd anypassword -auth guess -forever

...そして今、X11vncプログラムはdisplay:1を利用可能にします。ポート5901 TCPが使用されている限り、X11VNCは5900 TCP(aka :0 port)を使用します):

The VNC desktop is:      Frambuesio:0
PORT=5900

working状態のnetstat出力に注意してください。

luis@Frambuesio:~$ netstat -ano | grep 5900
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::5900                 :::*                    LISTEN      off (0.00/0/0)
luis@Frambuesio:~$ netstat -ano | grep 5901
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 ::1:5901                :::*                    LISTEN      off (0.00/0/0)

VNCサーバーに障害が発生したのはなぜですか?

問題は、不適切な(あなたのケースでは)オプションを持つVNCServerの単なるデフォルトの引数のようです。

vncserverコマンドラインヘルプから:

[-localhost yes|no]    Only accept VNC connections from localhost

これはあなたの問題を解決するはずです:

vncserver -localhost no

元の質問の同じ最後の例を解釈して、0.0.0.0:5900は「接続を聞くどこからでも 5900 TCPで」を意味します:

luis@Frambuesio:~$ netstat -ano | grep 5900
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::5900                 :::*                    LISTEN      off (0.00/0/0)

その間、127.0.0.1:5901は「listening connections from localhost at 5901 TCP」を意味します

luis@Frambuesio:~$ netstat -ano | grep 5901
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 ::1:5901                :::*                    LISTEN      off (0.00/0/0)
11

私は同じ問題に遭遇し、それを理解しました。コマンドラインから:

tigervncserver -localhost no :1

ファイル/etc/vnc.confにオプションを追加して永続化します。

$localhost = "no"

ファイルはデフォルトがlocalhost=noであると読み取りますが、そうではありません。

4
Jose Sanchez