Debian 10でVNCをインストールおよび設定する方法
イントロダクション
Virtual Network Computing、またはVNCは、リモートサーバー上のグラフィカルデスクトップ環境とキーボードやマウスでやり取りするための接続システムです。コマンドラインにまだ慣れていないユーザーに、リモートサーバー上のファイル、ソフトウェア、設定を管理するのに役立ちます。
このガイドでは、Debian 10 サーバー上に VNC サーバーをセットアップし、SSH トンネルを介して安全に接続する方法を説明します。高速で軽量なリモートコントロールパッケージである TightVNC を使用します。これにより、遅いインターネット接続でも VNC 接続がスムーズで安定することが保証されます。
前提条件
このチュートリアルを進めるためには、次のものが必要です:
- One Debian 10 server set up by following the Debian 10 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 10 サーバーにはグラフィカルなデスクトップ環境や VNC サーバーはインストールされていませんので、それらをインストールしてください。具体的には、公式 Debian リポジトリで利用可能な最新の Xfce デスクトップ環境と TightVNC パッケージのインストールを行ってください。
あなたのサーバーで、パッケージリストを更新してください。
- sudo apt update
あなたのサーバーにXfceデスクトップ環境をインストールしてください。
- sudo apt install xfce4 xfce4-goodies
インストール中、可能なオプションのリストからキーボードのレイアウトを選択するように指示されます。自身の言語に適したものを選んでエンターキーを押してください。インストールは続行されます。
インストールが完了したら、TightVNCサーバーをインストールしてください。
- sudo apt install tightvncserver
インストール後にVNCサーバーの初期設定を完了するために、vncserverコマンドを使用して安全なパスワードを設定し、初期の設定ファイルを作成します。
- vncserver
次に、リモートであなたのマシンにアクセスするためのパスワードを入力して確認するプロンプトが表示されます。
You will require a password to access your desktops. Password: Verify:
パスワードは6文字から8文字の長さでなければなりません。8文字を超えるパスワードは自動的に切り捨てられます。
パスワードを確認した後、閲覧専用のパスワードを作成するオプションがあります。閲覧専用のパスワードでログインしたユーザーは、マウスやキーボードでVNCインスタンスを操作することはできません。これは、VNCサーバーを使用して他の人に何かをデモンストレーションする際に便利なオプションですが、必須ではありません。
その後、プロセスはサーバーのために必要なデフォルトの設定ファイルと接続情報を作成します。
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など他の表示ポートでも複数のインスタンスを起動することができます。
次に、VNCサーバーの設定を変更するため、まず次のコマンドでポート5901で実行されているVNCサーバーインスタンスを停止してください。
- vncserver -kill :1
次は、あなたのサーバー環境に固有のPIDを含んだ出力結果です。
Killing Xtightvnc process ID 17648
xstartupファイルを変更する前に、元のファイルをバックアップしてください。
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
新しいxstartupファイルを作成し、お好みのテキストエディタで開きます。
- nano ~/.vnc/xstartup
このファイル内のコマンドは、VNCサーバーを起動または再起動するたびに自動的に実行されます。もしそれがまだ起動していない場合は、デスクトップ環境を開始するためにVNCが必要です。次のコマンドをファイルに追加してください。
~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
それぞれの行が行っていることの簡単な概要を以下に示します。 (Sorezore no gyō ga okonatte iru koto no kantan na gaiyō o ika ni shimasu.)
Note: Japanese sentence structure often differs from English, so a direct translation may not be possible. The provided phrase is a natural way to convey the meaning while maintaining clarity.
- #!/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サーバーが正しく使用できるようにするために、それを実行可能にする必要があります。
- sudo chmod +x ~/.vnc/xstartup
今、VNCサーバーを再起動してください。
- vncserver
出力は次のようなものになります。
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クライアントに直接接続するのではなく、そのトンネルを使用するように設定します。
自分のローカルコンピューター上でSSH接続を作成し、VNCのlocalhost接続に安全に転送します。次のコマンドを使用して、LinuxまたはmacOSの端末からこれを実行できます。sammyとyour_server_ipを非ルートユーザーのユーザー名とサーバーのIPアドレスに置き換えることを忘れないでください。
- 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.
PuTTYを使用してサーバーに接続している場合、ターミナルウィンドウの上部バーを右クリックし、その後、「設定の変更…」オプションを選択することでSSHトンネルを作成することができます。
左側のPuTTY再設定ウィンドウのツリーメニューで、接続ブランチを見つけてください。SSHブランチを展開して、トンネルをクリックしてください。SSHポート転送を制御するオプション画面で、ソースポートとして5901を入力し、宛先にはlocalhost:5901と入力してください。以下のように入力してください。
その後、[追加]ボタンをクリックし、次に[適用]ボタンをクリックしてトンネルを実装してください。
トンネルが動作している場合は、VNCクライアントを使用してlocalhost:5901に接続します。ステップ1で設定したパスワードを使用して認証を求められます。
接続が完了すると、デフォルトのXfceデスクトップが以下のように表示されます。
デビアン10サーバーへのVNC接続のためのXfceグラフィカルインターフェースのデフォルト状態は、初めてアクセスするときのXfceデスクトップ環境です。
デスクトップを設定するために、デフォルト設定を使用してください。
ここで示されているように、ファイルマネージャーまたはコマンドラインからホームディレクトリ内のファイルにアクセスすることができます。
ローカルマシンで、SSHトンネルを停止し、プロンプトに戻るためにターミナルでCTRL+Cを押してください。これにより、VNCセッションが切断されます。
次に、VNCサーバーをサービスとして設定します。
ステップ4 — VNCをシステムサービスとして実行する
次に、VNCサーバーをsystemdサービスとして設定します。必要に応じて起動、停止、再起動することができ、他のサービスと同様に扱うことができます。これにより、サーバーが再起動した際にもVNCが自動で起動するようになります。
最初に、お好きなテキストエディタを使って、/etc/systemd/system/vncserver@.serviceという新しいユニットファイルを作成してください。
- 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
If VNC is already running, the ExecStartPre command will stop it. The ExecStart command will start VNC, setting the color depth to 24-bit color and the resolution to 1280×800. You can also customize these startup options according to your requirements.
作業が終わったら、ファイルを保存して閉じてください。
次に、システムに新しいユニットファイルを認識させます。
- sudo systemctl daemon-reload
その後、ユニットファイルを有効にしてください。
- sudo systemctl enable vncserver@1.service
@サインの後ろに続く1は、表示するディスプレイ番号を示しており、この場合はデフォルトの:1です。これはステップ2で議論されました。
もしVNCサーバーがまだ動いている場合は、現在のインスタンスを停止してください。
- vncserver -kill :1
それでは、他のsystemdサービスと同じように始めてください。
- sudo systemctl start vncserver@1
次のコマンドで開始されたことを確認できます。
- sudo systemctl status vncserver@1
正しく開始された場合、出力は次のようになります。
● 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トンネルを開始してください。 (Mata SSH tonneru o kaishi shite kudasai.)
- ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
その後、VNCクライアントソフトウェアを使用してlocalhost:5901に新しい接続を作成し、自分のマシンに接続してください。
結論
あなたは現在、Debian 10サーバーに安全なVNCサーバーを起動しています。これにより、ユーザーフレンドリーでお馴染みのグラフィカルインターフェースを使用して、ファイル、ソフトウェア、設定を管理することができます。また、ウェブブラウザのようなグラフィカルソフトウェアもリモートで実行することができます。