Ubuntu16.04 でVNCしたい
問題
さくらのVPSなどのレンタルサーバーで、Ubuntuをインストールして、デスクトップ環境を作って、リモートデスクトップしたい。
答え
さくらのVPSでは、標準OSインストールからスタートして、15分程度の作業。ほとんどパッケージインストールの待ち時間。
OSインストール
さくらのVPSなら、管理画面のOSインストールで、標準OSのUbuntu16.04をインストール。SSDプランなら2,3分待てば済んでる。
sshでログイン
teratermなどのsshクライアントで接続。
初期ユーザー名 ubuntu。パスワードは自分で指定したもの。
パッケージ管理更新
$ sudo apt update && sudo apt upgrade
2,3分など、まあまあ時間がかかるので待つ
デスクトップ環境に必要なものをインストールする
$ sudo apt install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
大量のパッケージがインストールされるので、あれこれ入れたくない方は –no-install-recommends などつけておくとよいかもしれないです。
VNCサーバーをインストールする
インストール
$ sudo apt install vnc4server
初回起動 & パスワード設定
$ vncserver You will require a password to access your desktops. Password:(入力) Verify:(再入力) xauth: file /home/ubuntu/.Xauthority does not exist New 'www1234ug:1 (ubuntu)' desktop is www1234ug:1 Creating default startup script /home/ubuntu/.vnc/xstartup Starting applications specified in /home/ubuntu/.vnc/xstartup Log file is /home/ubuntu/.vnc/www1234ug:1.log
一旦停止
$ vncserver -kill :1
設定追加
$ vi ~/.vnc/xstartup
#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & # 追記 gnome-panel & gnome-settings-daemon & metacity & nautilus &
改めて起動
$ vncserver
外から接続可能にする(暗号化なし)
ここで単純に、ファイアウォールをなくしたり、許可しまえば、素のVNCができるが、通信は暗号化されていない。
VPN経由、社内LANなど、そのままVNCで良い状況であればそれはそれでありです。
iptables、ufwで設定される場合は状況に応じて設定されたし。
例) Ubuntu16.04の初期状態ではiptablesが以下のようになっている様子。 $ sudo iptables -L INPUT --line-numbers -L INPUT --line-numbers Chain INPUT (policy DROP) num target prot opt source destination 1 f2b-sshd tcp -- anywhere anywhere multiport dports ssh 2 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED 3 ACCEPT icmp -- anywhere anywhere 4 ACCEPT all -- anywhere anywhere 5 ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh 6 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited 7 ufw-before-logging-input all -- anywhere anywhere 8 ufw-before-input all -- anywhere anywhere 9 ufw-after-input all -- anywhere anywhere 10 ufw-after-logging-input all -- anywhere anywhere 11 ufw-reject-input all -- anywhere anywhere 12 ufw-track-input all -- anywhere anywhere REJECTの前にvncを許可したいので、以下のルールを追加 $ sudo iptables -I INPUT 6 -p tcp --dport 5901 -j ACCEPT
例)ufwで以下のようにしてよさそうだが、末尾に追加されると、REJECTが優先されて効果なしだったり… $ sudo ufw allow 5901/tcp from 12.34.56.78
外から接続可能にする(暗号化)
安全に暗号化したい場合はsshでトンネルするとよい。
Windowsだとteratermやputtyでポート転送の設定をしてから、VNCする。
サーバー側はssh許可済みならファイアウォールの設定など特に何もしなくてよい。
コメント