Virtual Network Computing (VNC) は、グラフィカルユーザーインターフェースにリモートでアクセスするために使用される画面共有システムです。リモートフレームバッファプロトコルを使用し、一方のサーバー(ユーザー側)ともう一方の側(クライアント)を接続できるようにします。VNC は安全でセキュアであり、すべてのオペレーティングシステムで動作します。
RealVNC, UltraVNC, Xfce, TightVNCなどは、今日使用されている最も人気のある VNC クライアントの一部です。利用可能な代替案のリストの中から、ご都合に合わせて任意の VNC を自由に選択できます。このチュートリアルでは、Ubuntu 20.04 に VNC をインストールして設定する手順を説明します。ここでは、Xfce をインストールします。その理由は、高速で軽量であり、優れたパフォーマンスを発揮するためです。
まず、Ubuntu サーバー上に VNC サーバーをセットアップし、SSH トンネルを介して安全な接続を確立することから始めます。最後に、ローカルマシンの VNC クライアントプログラムを使用して、グラフィカルなデスクトップ環境を介してサーバーと対話します。
前提条件
このチュートリアルを進めるには、以下が必要です。
-
非 root ユーザーと Ubuntu 20.04 サーバー、および 簡単なファイアウォール (UFW).
-
VNC クライアントがインストールされたローカルコンピューター。また、使用する VNC クライアントはSSH を介して接続します トンネル。
ステップ 1 — デスクトップ環境と VNC サーバーのインストール
以前の Ubuntu バージョンとは異なり、Ubuntu 20.04 には VNC がプリインストールされていません。最初のステップとして、公式の Ubuntu リポジトリから必要なパッケージをインストールします。進める前に、既存のパッケージを更新しましょう。
|
1 |
sudo apt update |
次に、次のコマンドを使用して Xfce と xfce4-goodies パッケージをインストールします。
|
1 |
sudo apt install xfce4 xfce4-goodies |
パッケージのインストール中に、Xfce のデフォルトのディスプレイマネージャーを選択するように求める画面が表示されます。メッセージを無視するか、デフォルトとして設定し、 を押します。ENTER.
ディスプレイマネージャーは、ユーザーがグラフィカルインターフェースを介してデスクトップ環境にログインできるようにするプログラムです。このチュートリアルでは、非 root の Ubuntu ユーザーとしてログインしている VNC クライアントと接続するときに Xfce を使用します。したがって、ディスプレイマネージャーの選択はインストールに影響を与えません。
Xfce のインストール後、TightVNC サーバーをインストールします。
|
1 |
sudo apt install tightvncserver |
次のステップでは、 vncserver コマンドを使用して VNC アクセスパスワードを設定し、初期設定ファイルを作成します。以下を入力して VNC サーバーインスタンスを起動します。
|
1 |
vncserver |
その後、6〜8文字の長さのパスワードを設定し、 を押します。ENTER。プロンプトメッセージが表示されます。
|
1 2 3 4 5 |
Output You will require a password to access your desktops. Password: Verify: |
将来、パスワードを変更したり、閲覧専用パスワードを追加したりする場合は、次のコマンドを使用します。
|
1 |
vncpasswd |
これで、サーバー用に作成されたすべてのデフォルト設定と、ディスプレイポート 5901 が として起動されます。:1。VNC は、 などの他のディスプレイポートで複数のインスタンスを起動できます。:2, :3、および :4 はそれぞれポート 5902, 5903、および 5904 を指します。
|
1 2 3 4 5 6 7 8 9 |
Output Would you like to enter a view-only password (y/n)? n xauth: file /home/cloudsigma/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/cloudsigma/.vnc/xstartup 起動中 アプリケーション 指定された 内 /home/cloudsigma/.vnc/xstartup ログ ファイル は /home/cloudsigma/.vnc/your_hostname:1.log |
VNCサーバーがインストールされ、正常に起動しました。次のステップでは、グラフィカルインターフェース経由でアクセスできるように、Xfceを起動するようにサーバーを設定しましょう。
ステップ 2 — VNCサーバーの設定
ホームディレクトリの下に、次のフォルダがあります。 .vnc フォルダには、次の名前のすべての設定ファイルが含まれています。 startup。最初は、ステップ1で次のコマンドを実行したときに自動的に作成されたスタートアップファイルが実行されているのがわかります。 vncserver in ステップ1。スタートアップスクリプトは、前のステップで次のコマンドを実行したときに作成されました。 vncserver コマンド。しかし、ここではXfceデスクトップを起動するために独自のスクリプトを作成します。VNCの設定が変更されるため、Xfceデスクトップを起動するための独自のサーバー設定も作成する必要があります。
次に進む前に、ポートで実行されているVNCサーバーインスタンスを停止する必要があります。 5901:
|
1 |
vncserver -kill :1 |
次のような出力が表示されます:
|
1 2 |
Output 終了中 Xtightvnc プロセス ID 17648 nano ~/.vnc/xstartup |
次の値の代わりに、 17648、異なる番号が表示される場合がありますが、問題ありません。次に、以下のファイルを変更します。 xstartup ファイル。ファイルを変更する前に、元のファイルをバックアップしておきましょう:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
次に、新しい xstartup ファイルを作成し、任意のテキストエディタで開きます。このチュートリアルでは、以下を使用します。 nano:
|
1 |
nano ~/.vnc/xstartup |
完了したら、ファイルに次の行を追加します:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
VNCサーバーを起動または再起動するたびに、これらのコマンドが自動的に実行されます。最初の行は、シバン(Shebang) であり、実行のために次のファイルを渡すインタプリタの情報をシステムに伝えます。 ~/.vnc/xstartup ファイル。次の行の xrdb $HOME/. Xresources は、VNCのGUIフレームワークに対して、サーバーユーザーの次のファイルを読み取るように指示します。 Xresources ファイル。最後に、最後の行はサーバーにXfceを起動するように要求します。これらの行を追加したら、ファイルを保存して閉じます。
VNCサーバーが新しいスタートアップファイルを使用できるように、ファイルを実行可能にする必要があります:
|
1 |
chmod +x ~/.vnc/xstartup |
次に、VNCサーバーを再起動します:
|
1 |
vncserver -localhost |
これで、次のオプションがここに追加されます。 -localhost オプション。localhostはVNCサーバーをサーバーのループバックインターフェースにバインドし、インストールされたサーバーからの接続のみを許可します。次に、ローカルマシンとサーバーの間にSSHトンネルを確立します。目的は、VNCのセキュリティをさらに強化することです。なぜでしょうか?アクセス権を持つユーザーは、すでにサーバーへのSSHアクセス権を持っているユーザーに限定されるためです。
次の出力が表示されます:
|
1 2 3 4 |
新規 'X' デスクトップ は your_hostname:1 起動中 アプリケーション 指定された 内 /home/sammy/.vnc/xstartup ログ ファイル は /home/cloudsigma/.vnc/your_hostname:1.log |
設定が完了したら、ローカルマシンからVNCサーバーに接続する準備が整います。
ステップ 3 — VNCデスクトップに安全に接続する
サーバーに接続する際、VNCは安全なプロトコルを使用しません。そのため、SSHトンネルを確立し、VNCクライアントが直接接続するのではなく、トンネルを使用して接続するように設定する必要があります。
ローカルコンピュータで、次のコマンドを使用してSSH接続を作成します。 ssh コマンド。これは次の接続に転送されます。 localhost 接続。ターミナルでコマンドを使用してSSH接続を作成します:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
上記のコードを解読してみましょう:
-
-L 59000:localhost:5901: -L スイッチは、ローカルコンピュータ上の指定されたポート( 59000)が、送信先サーバー上の指定されたホストとポート( localhost:5901)に転送されることを指定します。つまり、ポート 5901(接続先サーバー上)は、次のように定義されます: your_server_ip)。指定するローカルポートは任意です。そのポートがすでに他のサービスにバインドされていない限り、トンネルの転送ポートとして自由に使用できます。
-
-C:圧縮を有効にします。これにより、リソース消費をさらに抑え、パフォーマンスを向上させることができます。
-
-N:ポート転送に便利です。これにより、 sshに対し、リモートコマンドを実行しないよう指示します。
-
-l cloudsigma your_server_ip: -lスイッチを使用すると、サーバーへの接続後にログインするユーザーを指定できます。
上記のコマンドは、単にサーバーのファイアウォールを開放してポート 5901への接続をどこからでも許可するよりも、安全な接続を確立するためのよりセキュアな方法です。接続が確立されると、SSHトンネルはポート 5901(VNC側)からのコンテンツを、ローカルマシンのポート 59000へデフォルトのSSHポートを介して転送します。ポート 22.
また、PuTTYを使用してサーバーに接続することもできます。PuTTYを開き、PuTTY端末の左側にあるConnectionブランチを見つけて接続します。次に、SSHブランチを展開し、Tunnelsをクリックします。Options controlling SSH port forwarding 画面で、に、 59000をSource Portとして入力し、 localhost:5901をDestination:

他のオプションはすべて変更せず、Addをクリックし、次にApplyをクリックしてトンネルを実装します。トンネルが開始されたら、VNCクライアントを使用して localhost: 59000に接続します。デフォルトでは、Step-1で作成したパスワードを使用して認証を求められます。接続すると、デフォルトのXfceデスクトップが表示されます:

ホームディレクトリ内のファイルにアクセスして管理できます。また、VNCサーバーをsystemd service.
ステップ 4 — VNCをSystemdサービスとして実行する
VNCサーバーをsystemdサービスとして実行するように設定すると、サーバーの管理が可能になります。都合や必要に応じて、起動、停止、再起動、または終了を行うことができます。サーバーが起動するたびに、systemd管理コマンドを使用して、サーバーが ONまたは OFF.
まず、サービスを管理するときに使用するVNCディスプレイポートを指定するための新しいユニットファイルを作成します。ユニットファイルを定義します:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
ファイル名の末尾に @記号があることに気づくでしょう。これにより、サービス設定を使用するための引数を渡すことができます。
次に、ユニットファイルに一連の行を追加します。User, Group, WorkingDirectory,および、PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=cloudsigma Group=cloudsigma WorkingDirectory=/home/cloudsigma PIDFile=/home/cloudsigma/.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 |
VNCがすでに実行されている場合、 ExecStartPreコマンドはそれを停止します。 ExecStartコマンドはVNCを起動し、色深度を24ビットカラー、解像度を1280×800に設定します。これらの起動オプションは、要件に基づいて編集できます。また、 ExecStartコマンドには再び -localhostオプションが含まれていることに注意してください。完了したら、ユニットファイルを保存して閉じます。
次に、新しいユニットファイルをシステムに認識させます:
|
1 |
sudo sudo systemctl daemon-reload |
ユニットファイルを 有効(ON)にします:
|
1 |
sudo systemctl enable vncserver@1.service |
の後の 1に続く @ 記号は、サービスを表示するディスプレイ番号を示します。今回のケースでは、デフォルトの :1 です。これについては、ステップ2 で説明しました。VNCがまだ実行中の場合は、次の kill コマンドを使用して、VNCサーバーの現在のインスタンスを停止できます:
|
1 |
vncserver -kill :1 |
次に、他のsystemdサービスを開始するのと同様に起動します:
|
1 |
sudo systemctl start vncserver@1 |
次のコマンドで起動したことを確認できます:
|
1 |
sudo systemctl status vncserver@1 |
次のような出力が表示されます:
|
1 2 3 4 5 6 7 8 |
出力 vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-07 17:23:50 UTC; 6s ago Process: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Main PID: 39795 (Xtightvnc) ... |
これで、サーバーの起動時にいつでもVNCサーバーを使用できるようになり、他のsystemdサービスと同様に systemctl コマンドで管理できます。ただし、クライアント側では違いは表示されません。再接続するには、次のコマンドを使用して SSH トンネルを開始します:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
VNCクライアントを使用して、サーバーの localhost:59000 に再び接続できます。
おわりに
最初は、特に新しいコンピューターに接続しようとする場合、VNCサーバーの設定が難しく感じられるかもしれません。しかし、一度安定した接続を確立できれば、リモートコンピューターでの作業は楽しくエキサイティングなものになります。Ubuntu 20.04サーバー上で安全なVNCサーバーを稼働させることで、ユーザーフレンドリーなグラフィカルインターフェースを使用して、リソース、ファイル、ソフトウェア、設定を簡単に管理できます。帯域幅を過剰に消費することがVNCを使用する唯一のデメリットかもしれません。これについては、低解像度やグレースケールの画面を使用することで、より高速な転送を実現し、克服することができます。
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。