Debian 11 に VNC をインストールして設定する方法

はじめに

仮想ネットワークコンピューティング(VNC)は、遠隔サーバー上のグラフィカルなデスクトップ環境とキーボードやマウスを使用して対話する接続システムです。コマンドラインにまだ慣れていないユーザーにとって、遠隔サーバー上のファイル、ソフトウェア、および設定の管理を補助します。

このガイドでは、Debian 11サーバーにTightVNCを使用してVNCサーバーを設定し、SSHトンネルを介して安全に接続します。そして、ローカルマシン上のVNCクライアントプログラムを使用して、グラフィカルなデスクトップ環境を介してサーバーと対話します。

前提条件

このチュートリアルを進めるには、以下が必要です:

  • One Debian 11 server set up by following the Debian 11 initial server setup guide, including a non-root user with sudo access and a firewall.
  • A local computer with a VNC client installed that supports VNC connections over SSH tunnels.On Windows, you can use TightVNC, RealVNC, or UltraVNC.
    On macOS, you can use the built-in Screen Sharing program, or can use a cross-platform app like RealVNC.
    On Linux, you can choose from many options, including vinagre, krdc, RealVNC, or TightVNC.

全ての準備が整ったら、最初のステップに進むことができます。

ステップ1 — デスクトップ環境とVNCサーバーのインストール

デフォルトでは、Debian 11 サーバーにはグラフィカルなデスクトップ環境や VNC サーバーはインストールされていませんので、それらをインストールすることから始めます。

VNCサーバーとデスクトップ環境の選択肢はたくさんあります。このチュートリアルでは、公式のUbuntuリポジトリから利用できる最新のXfceデスクトップ環境とTightVNCパッケージのインストール手順を説明します。XfceとTightVNCはどちらも軽量で高速として知られており、遅いインターネット接続でもVNC接続がスムーズかつ安定することを確保するのに役立ちます。

SSHでサーバーに接続した後、パッケージのリストを更新してください。

  1. sudo apt update

 

今、サーバーにXfceデスクトップ環境とxfce4-goodiesパッケージをインストールしてください。

  1. sudo apt install xfce4 xfce4-goodies

 

インストール中には、Xfceのデフォルトのディスプレイマネージャを選択するよう促されることがあります。ディスプレイマネージャは、グラフィカルインターフェースを通じてデスクトップ環境を選択し、ログインするためのプログラムです。VNCクライアントで接続すると、Xfceのみを使用します。また、これらのXfceセッションでは、すでに非ルートのDebianユーザーとしてログインしています。したがって、このチュートリアルでは、ディスプレイマネージャの選択は重要ではありません。どちらかを選択してENTERキーを押してください。

インストールが完了したら、TightVNCサーバーをインストールしてください。

  1. sudo apt install tightvncserver

 

次に、VNCサーバーへの適切な接続を確保するために、dbus-x11の依存関係をインストールしてください。

  1. sudo apt install dbus-x11

 

インストール後、VNCサーバーの初期設定を完了するには、vncserverコマンドを使用して安全なパスワードを設定し、初期設定ファイルを作成します。

  1. vncserver

 

次に、リモートでマシンにアクセスするためのパスワードを入力して確認するためのプロンプトが表示されます。

Output

You will require a password to access your desktops. Password: Verify:

パスワードは6文字から8文字の長さでなければなりません。8文字以上のパスワードは自動的に切り捨てられます。

パスワードが確認されたら、閲覧専用パスワードを作成するオプションがあります。閲覧専用パスワードでログインしたユーザーはマウスやキーボードでVNCインスタンスを操作することはできません。これは、VNCサーバーを使用して他の人に何かをデモンストレーションする場合に便利なオプションですが、必須ではありません。

その後、プロセスはサーバーの必要なデフォルト設定ファイルと接続情報を作成します。

Output

Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New ‘X’ desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

次に、Xfceを起動するように設定し、グラフィカルインターフェースを通じてサーバーへのアクセスを可能にしてください。

ステップ2 — VNCサーバーの設定を行います。

VNCサーバーは起動時に実行するコマンドを知る必要があります。具体的には、VNCはどのグラフィカルデスクトップに接続するかを知る必要があります。

これらのコマンドは、ホームディレクトリの.vncフォルダの中にあるxstartupという設定ファイルに配置されています。前のステップでvncserverコマンドを実行した際に起動スクリプトが作成されましたが、それに代わって自分自身でXfceデスクトップを起動するスクリプトを作成します。

最初にVNCが設定されると、ポート5901でデフォルトのサーバーインスタンスが起動します。このポートはディスプレイポートと呼ばれ、VNCでは「:1」として参照されます。VNCは、例えば「:2」「:3」などの他の表示ポート上で複数のインスタンスを起動することができます。

以下のコマンドを使用して、ポート5901で実行されているVNCサーバーのインスタンスを最初に停止しているため、VNCサーバーの設定を変更する前に停止してください。

  1. vncserver -kill :1

 

以下は、あなたのサーバー環境に特定のPIDを持つ出力です。

Output

Killing Xtightvnc process ID 17648

xstartupファイルを変更する前に、元のファイルをバックアップしてください。

  1. mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

 

新しいxstartupファイルを作成し、お好みのテキストエディタで開きます。

  1. nano ~/.vnc/xstartup

 

このファイル内のコマンドは、VNCサーバーを起動または再起動するたびに自動的に実行されます。もしまだ起動されていない場合、デスクトップ環境を開始するためにVNCが必要です。以下のコマンドをファイルに追加してください。

以下の表現を日本語で自然に言い換えます。1つのオプションで十分です:
「~/.vnc/xstartup」
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

各行の概要を簡単に説明します。

  • #!/bin/bash: The first line is a shebang. In executable plain-text files on *nix platforms, a shebang tells the system what interpreter to pass that file to for execution. In this case, you’re passing the file to the Bash interpreter. This will allow each successive line to be executed as commands, in order.
  • xrdb $HOME/.Xresources: This command tells VNC’s GUI framework to read the user’s .Xresources file. .Xresources is where a user can make changes to certain settings for the graphical desktop, like terminal colors, cursor themes, and font rendering.
  • startxfce4 &: This command tells the server to launch Xfce. This is where you will find all the graphical software that you need to comfortably manage your server.

終了したら、エディタを保存して終了します。nanoを使用している場合は、CTRL+X、次にY、そしてENTERを押してください。

新しいスタートアップファイルを正しく使用できるように、VNCサーバーが実行可能になるように設定する必要があります。

  1. sudo chmod +x ~/.vnc/xstartup

 

今、VNCサーバーを再起動してください。

  1. vncserver

 

出力は次のようになります。

Output

New ‘X’ desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

設定が完了したら、ローカルマシンからVNCサーバーに接続する準備が整いました。

3 ステップ目 – 安全にVNCデスクトップに接続する

VNC自体は、接続時にセキュアプロトコルを使用しません。安全に接続するためには、SSHトンネルを使用してサーバーに接続し、VNCクライアントに直接接続する代わりにそのトンネルを使用します。

LinuxまたはmacOSのターミナルを使用して、ローカルコンピュータにSSH接続を作成し、VNCのlocalhost接続に安全に転送します。次のコマンドを使用してこれを行うことができます。sammyとyour_server_ipを、非rootユーザー名とサーバーのIPアドレスに置き換えることを忘れないでください。

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

 

以下のコマンドをターミナルで実行しても出力は返されませんので、ご了承ください。グラフィカルインターフェースを表示するためには、VNCクライアントを使用する必要があります。

このsshコマンドのオプションの意味は次の通りです:

  • The -L switch specifies the port bindings. In this case you’re binding port 5901 of the remote connection to port 5901 on your local machine.
  • The -C switch enables compression to help minimize resource consumption and speed things up.
  • The -N switch tells ssh that you don’t want to execute a remote command.
  • The -l switch specifies the remote login name. Make sure to replace sammy and your_server_ip with the name of your non-root user and your server’s IP address.

PuTTYを使用してサーバーに接続している場合、ターミナルウィンドウの上部バーを右クリックしてから、「設定の変更」オプションを選択すると、SSHトンネルを作成できます。

「トップバーを右クリックして「設定の変更」オプションを表示することができます。」

左側のPuTTY再構成ウィンドウのツリーメニューで、接続の枝を見つけてください。SSHの枝を展開し、トンネルをクリックしてください。 SSHポートフォワーディングを制御するオプション画面では、ソースポートに5901を入力し、宛先にlocalhost:5901を入力してください。

Adding port forwarding information into PuTTy

次に、追加ボタンをクリックし、そして適用ボタンを押すことでトンネルを実装してください。

トンネルが稼働したら、VNCクライアントを使用してlocalhost:5901に接続してください。ステップ1で設定したパスワードを使用して認証を求められます。

接続が確立されると、デフォルトのXfceデスクトップは以下のように表示されます。

The default Xfce graphical interface for the VNC connection to your Debian 11 server

デスクトップを設定するために、デフォルトの設定を使用してください。

ここに示すように、ファイルマネージャーまたはコマンドラインから、ホームディレクトリ内のファイルにアクセスできます。

Debian 11へのVNC接続を介してファイルを検索する方法を紹介します。[リンク先の画像](https://assets.digitalocean.com/articles/vnc_debian10/xfce-windows.png “VNCクライアントを使用してファイルを検索する方法”)を参照してください。

ローカルマシン上で、ターミナルでCTRL+Cを押してSSHトンネルを停止し、プロンプトに戻ってください。これにより、VNCセッションが切断されます。

次に、VNCサーバーをサービスとして設定します。

ステップ4 — システムサービスとしてVNCを実行する

次に、VNCサーバーをsystemdサービスとしてセットアップします。他のサービスと同様、必要に応じて開始、停止、再起動が可能です。これにより、サーバーが再起動された時にもVNCが起動することが保証されます。

まず、お好みのテキストエディタを使用して、新しいユニットファイル「/etc/systemd/system/vncserver@.service」を作成してください。

  1. sudo nano /etc/systemd/system/vncserver@.service

 

名前の末尾にある@記号は、サービスの設定で使用できる引数を渡すことができます。この引数を使用して、サービスを管理する際に使用するVNCディスプレイポートを指定します。

以下の行をファイルに追加してください。User、Group、WorkingDirectoryの値、およびPIDFILEの値内のユーザー名を、あなたのユーザー名に合わせて変更してください。

以下の内容を日本語で自然に言い換えると、次のようになります。
「/etc/systemd/system/vncserver@.service」
[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 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

ExecStartPreコマンドは、VNCがすでに実行中の場合に停止します。ExecStartコマンドは、VNCを起動し、解像度1280×800の24ビットカラーでカラーデプスを設定します。これらの起動オプションも、必要に応じて変更することができます。

作業が終わったら、ファイルを保存し閉じてください。

次に、システムに新しいユニットファイルを認識させます。

  1. sudo systemctl daemon-reload

 

それから、ユニットファイルを有効にしてください。

  1. sudo systemctl enable vncserver@1.service

 

@マークの後ろに続く「1」は、このサービスが表示されるディスプレイの番号を表します。この場合はデフォルトの:1、ステップ2で話し合われた通りです。

もしVNCサーバーがまだ起動している場合は、現在のインスタンスを停止してください。

  1. vncserver -kill :1

 

他のsystemdサービスと同じように開始してください。

  1. sudo systemctl start vncserver@1

 

以下のコマンドでそれが開始されたことを確認できます。

  1. sudo systemctl status vncserver@1

 

正しく開始された場合、出力は以下のようになります。

Output

● vncserver@1.service – Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-08-19 16:21:36 UTC; 5s ago Process: 24469 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 24474 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280×800 -localhost :1 (code=exited, status=0/SUCCESS) Main PID: 24482 (Xtightvnc) . . .

機械を再起動すると、VNCサーバーが利用可能になります。

再びSSHトンネルを開始してください。

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

 

その後、VNCクライアントソフトウェアを使用してlocalhost:5901に新しい接続を作成し、自分のマシンに接続してください。

結論

現在、Debian 11サーバー上で安全なVNCサーバーが稼働しています。これにより、使いやすく馴染み深いグラフィカルインターフェイスを使用して、ファイルやソフトウェア、設定を管理できるようになりました。また、リモートでウェブブラウザのようなグラフィカルソフトウェアも実行できます。

コメントを残す 0

Your email address will not be published. Required fields are marked *