Ubuntu20.04にVNCをインストールして構成する方法[クイックスタート]
序章
Virtual Network Computing (VNC)は、キーボードとマウスを使用してリモートサーバー上のグラフィカルデスクトップ環境と対話できるようにする接続システムです。 これにより、コマンドラインにまだ慣れていないユーザーにとって、リモートサーバー上のファイル、ソフトウェア、および設定の管理が容易になります。
このクイックスタートガイドでは、Ubuntu20.04サーバー上にTightVNC を使用してVNCサーバーをセットアップし、SSHトンネルを介して安全に接続します。 次に、ローカルマシンでVNCクライアントプログラムを使用して、グラフィカルデスクトップ環境を介してサーバーと対話します。
##前提条件
このチュートリアルを完了するには、次のものが必要です。
- ルート以外の管理ユーザーとUFWで構成されたファイアウォールを備えた1台のUbuntu20.04サーバー。 これを設定するには、Ubuntu20.04の初期サーバー設定ガイドに従ってください。
- VNCクライアントがインストールされているローカルコンピューター。 使用するVNCクライアントは、SSHトンネルを介した接続をサポートしている必要があります。
Windowsでは、TightVNC、RealVNC、またはUltraVNCを使用できます。 macOSでは、組み込みの画面共有プログラムを使用することも、RealVNCなどのクロスプラットフォームアプリを使用することもできます。 Linuxでは、vinagre、krdc、RealVNC、TightVNCなどの多くのオプションから選択できます。
ステップ1—デスクトップ環境とVNCサーバーをインストールする
SSHでサーバーに接続した後、パッケージのリストを更新します。
- sudo apt update
次に、Xfceをxfce4-goodies
パッケージと一緒にインストールします。このパッケージには、デスクトップ環境のいくつかの拡張機能が含まれています。
- sudo apt install xfce4 xfce4-goodies
そのインストールが完了したら、TightVNCサーバーをインストールします。
- sudo apt install tightvncserver
次に、vncpasswd
コマンドを実行して、VNCアクセスパスワードを設定し、初期構成ファイルを作成します。
- vncpasswd
マシンにリモートアクセスするためのパスワードを入力して確認するように求められます。
OutputYou will require a password to access your desktops.
Password:
Verify:
パスワードは6〜8文字の長さである必要があります。 8文字を超えるパスワードは自動的に切り捨てられます。 パスワードを確認すると、表示専用のパスワードを作成するオプションが表示されますが、これは必須ではありません。
パスワードを変更したり、表示専用パスワードを追加したりする場合は、vncpasswd
コマンドを再実行してください。
##ステップ2—VNCサーバーの構成
VNCサーバーが起動時に実行するコマンドは、ホームディレクトリの下の.vnc
フォルダーにあるxstartup
という構成ファイルにあります。 このステップでは、VNCサーバーにXfceデスクトップに接続するように指示するカスタムxstartup
スクリプトを作成します。
新しいxstartup
ファイルを作成し、nano
などのテキストエディタで開きます。
- nano ~/.vnc/xstartup
新しいファイルに次の行を追加します。
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
shebang に続いて、ファイルの最初のコマンドxrdb $HOME/.Xresources
は、サーバーユーザーの.Xresources
ファイルを読み取るようにVNCのGUIフレームワークに指示します。 2番目のコマンドは、サーバーにXfceを起動するように指示します。
これらの行を追加したら、ファイルを保存して閉じます。 nano
を使用した場合は、CTRL + X
、Y
、ENTER
の順に押してください。
次に、ファイルを実行可能にします。
- chmod +x ~/.vnc/xstartup
そして、vncserver
コマンドでVNCサーバーを起動します。
- vncserver -localhost
このコマンドには、-localhost
オプションが含まれています。このオプションは、VNCサーバーをサーバーのループバックインターフェイスにバインドします。 これにより、VNCはそれがインストールされているサーバーから発信された接続のみを許可します。
次のような出力が表示されます。
OutputNew 'X' desktop is your_hostname:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
ここでは、コマンドがポート5901
でデフォルトのサーバーインスタンスを起動することがわかります。 このポートはディスプレイポートと呼ばれ、VNCでは:1
と呼ばれます。
ステップ3—VNCデスクトップに安全に接続する
サーバーに安全に接続するには、SSHトンネルを確立してから、直接接続するのではなく、そのトンネルを使用して接続するようにVNCクライアントに指示します。
VNCのlocalhost
接続に安全に転送するSSH接続をローカルコンピューターに作成します。 これは、次のssh
コマンドを使用して、LinuxまたはmacOSのターミナルから実行できます。
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
この例では59000
を使用していますが、ローカルポートは、別のプログラムまたはプロセスによってまだブロックされていない任意のポートにすることができます。 また、sammy
をUbuntuユーザーのユーザー名に変更し、your_server_ip
をサーバーのIPアドレスを反映するように変更してください。
PuTTYを使用してサーバーに接続している場合は、ターミナルウィンドウのトップバーを右クリックし、[設定の変更…]オプションをクリックしてSSHトンネルを作成できます。
PuTTY再構成ウィンドウの左側にあるツリーメニューでConnectionブランチを見つけます。 SSH ブランチを展開し、Tunnelsをクリックします。 SSHポート転送を制御するオプション画面で、送信元ポートとして59000
を入力し、宛先としてlocalhost:5901
を入力します。これ:
次に、追加ボタンをクリックし、次に適用ボタンをクリックしてトンネルを実装します。
トンネルが実行されたら、VNCクライアントを使用してlocalhost:59000
に接続します。 手順1で設定したパスワードを使用して認証するように求められます。
接続すると、デフォルトのXfceデスクトップが表示されます。 次のようになります。
次に示すように、ファイルマネージャを使用するか、コマンドラインからホームディレクトリ内のファイルにアクセスできます。
ローカル端末でCTRL+C
を押して、SSHトンネルを停止し、プロンプトに戻ります。 これにより、VNCセッションも切断されます。
ステップ4—VNCをシステムサービスとして実行する
VNCサーバーをsystemdサービスとして実行するように設定することにより、systemdの管理コマンドstart、stop、restartを使用でき、サーバーが起動するたびにサーバーの実行を開始できるようになります。
まず、/etc/systemd/system/[email protected]
という名前の新しいsystemdユニットファイルを作成します。
- sudo nano /etc/systemd/system/[email protected]
名前の最後にある@
記号を使用すると、サービス構成で使用できる引数を渡すことができます。 これを使用して、サービスを管理するときに使用するVNCディスプレイポートを指定します。
次の行をファイルに追加します。必ずUser、 Group 、 WorkingDirectory の値、およびPIDFILEの値のユーザー名を変更してください。 ユーザー名と一致させる:
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
ファイルを保存して閉じます。
次に、システムに新しいユニットファイルを認識させます。
- sudo systemctl daemon-reload
ユニットファイルを有効にします。
- sudo systemctl enable [email protected]
@
記号に続く1
は、サービスが表示される表示番号を示します。この場合は、手順2で説明したデフォルトの:1
です。
VNCサーバーがまだ実行中の場合は、現在のインスタンスを停止します。
- vncserver -kill :1
次に、他のsystemdサービスを開始するのと同じように開始します。
- sudo systemctl start vncserver@1
次のコマンドで開始したことを確認できます。
- sudo systemctl status vncserver@1
systemctl
の詳細については、Systemctlを使用してSystemdサービスとユニットを管理する方法のチュートリアルを参照してください。
再接続するには、SSHトンネルを再度開始します。
- ssh -L 59000:127.0.0.1:5901 -C -N -l sammy your_server_ip
次に、VNCクライアントソフトウェアを使用してlocalhost:59000
に新しい接続を確立し、サーバーに接続します。
結論
これで、Ubuntu20.04サーバー上でセキュリティで保護されたVNCサーバーが稼働しています。 これで、ユーザーフレンドリーなグラフィカルインターフェイスを使用してファイル、ソフトウェア、および設定を管理できるようになり、Webブラウザなどのグラフィカルソフトウェアをリモートで実行できるようになります。