SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

Ubuntu16.04 でVNCしたい

問題

さくらのVPSなどのレンタルサーバーで、Ubuntuをインストールして、デスクトップ環境を作って、リモートデスクトップしたい。

UbuntuでVNCのスクリーンショット

答え

さくらの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許可済みならファイアウォールの設定など特に何もしなくてよい。

SSHポート転送でVNC

関連するメモ

コメント