Debian10にVNCをインストールして設定する方法
序章
Virtual Network Computing (VNC)は、キーボードとマウスを使用してリモートサーバー上のグラフィカルデスクトップ環境と対話できるようにする接続システムです。 これにより、コマンドラインにまだ慣れていないユーザーにとって、リモートサーバー上のファイル、ソフトウェア、および設定の管理が容易になります。
このガイドでは、Debian 10サーバー上にVNCサーバーをセットアップし、SSHトンネルを介して安全に接続します。 高速で軽量なリモコンパッケージであるTightVNCを使用します。 この選択により、低速のインターネット接続でもVNC接続がスムーズかつ安定することが保証されます。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- Debian10初期サーバーセットアップガイドに従ってセットアップされた1台のDebian10サーバー。これには、
sudo
アクセス権を持つ非rootユーザーとファイアウォールが含まれます。 - SSHトンネルを介したVNC接続をサポートするVNCクライアントがインストールされたローカルコンピューター。
Windowsでは、TightVNC、RealVNC、またはUltraVNCを使用できます。 macOSでは、組み込みの画面共有プログラムを使用することも、RealVNCなどのクロスプラットフォームアプリを使用することもできます。 Linuxでは、vinagre、krdc、RealVNC、TightVNCなどの多くのオプションから選択できます。
ステップ1—デスクトップ環境とVNCサーバーをインストールする
デフォルトでは、Debian 10サーバーにはグラフィカルデスクトップ環境またはVNCサーバーがインストールされていないため、それらをインストールすることから始めます。 具体的には、最新の Xfce デスクトップ環境用のパッケージと、公式のDebianリポジトリで入手可能なTightVNCパッケージをインストールします。
サーバーで、パッケージのリストを更新します。
- sudo apt update
次に、Xfceデスクトップ環境をサーバーにインストールします。
- sudo apt install xfce4 xfce4-goodies
インストール中に、可能なオプションのリストからキーボードレイアウトを選択するように求められます。 ご使用の言語に適したものを選択し、Enter
を押してください。 インストールは続行されます。
インストールが完了したら、TightVNCサーバーをインストールします。
- sudo apt install tightvncserver
インストール後にVNCサーバーの初期構成を完了するには、vncserver
コマンドを使用して安全なパスワードを設定し、初期構成ファイルを作成します。
- vncserver
マシンにリモートアクセスするためのパスワードを入力して確認するように求められます。
OutputYou will require a password to access your desktops.
Password:
Verify:
パスワードは6〜8文字の長さである必要があります。 8文字を超えるパスワードは自動的に切り捨てられます。
パスワードを確認すると、表示専用のパスワードを作成するオプションが表示されます。 表示専用パスワードでログインするユーザーは、マウスまたはキーボードでVNCインスタンスを制御することはできません。 これは、VNCサーバーを使用して他の人に何かをデモンストレーションしたい場合に便利なオプションですが、必須ではありません。
次に、プロセスはサーバーに必要なデフォルトの構成ファイルと接続情報を作成します。
OutputWould 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
それでは、VNCサーバーを構成しましょう。
ステップ2—VNCサーバーの構成
VNCサーバーは、起動時に実行するコマンドを知る必要があります。 具体的には、VNCは接続するグラフィカルデスクトップを知る必要があります。
これらのコマンドは、ホームディレクトリの下の.vnc
フォルダにあるxstartup
という構成ファイルにあります。 起動スクリプトは、前の手順でvncserver
コマンドを実行したときに作成されましたが、Xfceデスクトップを起動するための独自のスクリプトを作成します。
VNCが最初にセットアップされるとき、ポート5901
でデフォルトのサーバーインスタンスを起動します。 このポートはディスプレイポートと呼ばれ、VNCでは:1
と呼ばれます。 VNCは、:2
、:3
などの他のディスプレイポートで複数のインスタンスを起動できます。
VNCサーバーの構成方法を変更するため、最初に次のコマンドを使用して、ポート5901
で実行されているVNCサーバーインスタンスを停止します。
- vncserver -kill :1
別のPIDが表示されますが、出力は次のようになります。
OutputKilling Xtightvnc process ID 17648
xstartup
ファイルを変更する前に、元のファイルをバックアップしてください。
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
次に、新しいxstartup
ファイルを作成し、テキストエディタで開きます。
- nano ~/.vnc/xstartup
このファイルのコマンドは、VNCサーバーを起動または再起動するたびに自動的に実行されます。 デスクトップ環境がまだ起動されていない場合は、VNCを起動する必要があります。 次のコマンドをファイルに追加します。
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
ファイルの最初のコマンドxrdb $HOME/.Xresources
は、VNCのGUIフレームワークにユーザーの.Xresources
ファイルを読み取るように指示します。 .Xresources
は、ユーザーが端末の色、カーソルテーマ、フォントレンダリングなど、グラフィカルデスクトップの特定の設定を変更できる場所です。 2番目のコマンドは、サーバーにXfceを起動するように指示します。ここには、サーバーを快適に管理するために必要なすべてのグラフィカルソフトウェアがあります。
VNCサーバーがこの新しいスタートアップファイルを適切に使用できるようにするには、ファイルを実行可能にする必要があります。
- sudo chmod +x ~/.vnc/xstartup
ここで、VNCサーバーを再起動します。
- vncserver
次のような出力が表示されます。
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
構成が整ったら、ローカルマシンからサーバーに接続しましょう。
ステップ3—VNCデスクトップを安全に接続する
VNC自体は、接続時に安全なプロトコルを使用しません。 SSHトンネルを使用してサーバーに安全に接続し、VNCクライアントに直接接続するのではなくそのトンネルを使用するように指示します。
VNCのlocalhost
接続に安全に転送するSSH接続をローカルコンピューターに作成します。 これは、LinuxまたはmacOSのターミナルから次のコマンドで実行できます。
- ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
-L
スイッチは、ポートバインディングを指定します。 この場合、リモート接続のポート5901
をローカルマシンのポート5901
にバインドしています。 -C
スイッチは圧縮を有効にし、-N
スイッチはssh
にリモートコマンドを実行したくないことを通知します。 -l
スイッチは、リモートログイン名を指定します。
sammy
とyour_server_ip
を、root以外のユーザー名とサーバーのIPアドレスに置き換えることを忘れないでください。
PuTTYなどのグラフィカルSSHクライアントを使用している場合は、接続IPとしてyour_server_ip
を使用し、プログラムのSSHトンネル設定でlocalhost:5901
を新しい転送ポートとして設定します。
トンネルが実行されたら、VNCクライアントを使用してlocalhost:5901
に接続します。 手順1で設定したパスワードを使用して認証するように求められます。
接続すると、デフォルトのXfceデスクトップが表示されます。
デフォルトの構成を使用を選択して、デスクトップをすばやく構成します。
次に示すように、ファイルマネージャを使用するか、コマンドラインからホームディレクトリ内のファイルにアクセスできます。
ローカルマシンで、ターミナルのCTRL+C
を押してSSHトンネルを停止し、プロンプトに戻ります。 これにより、VNCセッションも切断されます。
次に、VNCサーバーをサービスとしてセットアップしましょう。
ステップ4—VNCをシステムサービスとして実行する
次に、VNCサーバーをsystemdサービスとしてセットアップし、他のサービスと同様に、必要に応じてサーバーを開始、停止、および再起動できるようにします。 これにより、サーバーの再起動時にVNCが確実に起動します。
まず、お気に入りのテキストエディタを使用して、/etc/systemd/system/[email protected]
という新しいユニットファイルを作成します。
- 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 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
ExecStartPre
コマンドは、VNCがすでに実行されている場合、それを停止します。 ExecStart
コマンドはVNCを起動し、色深度を1280×800の解像度で24ビットカラーに設定します。 ニーズに合わせて、これらのスタートアップオプションを変更することもできます。
ファイルを保存して閉じます。
次に、システムに新しいユニットファイルを認識させます。
- 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
正しく起動した場合、出力は次のようになります。
Output● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-10-10 17:56:17 UTC; 5s ago
Process: 935 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Process: 940 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
Main PID: 948 (Xtightvnc)
. . .
マシンを再起動すると、VNCサーバーが使用可能になります。
SSHトンネルを再度開始します。
- ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
次に、VNCクライアントソフトウェアを使用してlocalhost:5901
に新しい接続を確立し、マシンに接続します。
結論
これで、Debian10サーバー上でセキュリティで保護されたVNCサーバーが稼働しています。 これで、使いやすく使い慣れたグラフィカルインターフェイスを使用してファイル、ソフトウェア、および設定を管理できるようになり、Webブラウザなどのグラフィカルソフトウェアをリモートで実行できるようになります。