サーバーを管理する従来の方法は、sshとコマンドラインを使用することです。ただし、サーバー上でGUIを使用してアプリケーションを実行する必要がある場合があります。通常、サーバーの隣に座っていないため、サーバーにモニターとキーボードがない場合は、何らかのリモートデスクトップが必要になります。
VNCは、広く使用されているこのための優れたソリューションであり、セットアップは非常に簡単です。 UbuntuのリポジトリにはTightVNCがあります。このチュートリアルでは、UbuntuServer16.04にマルチユーザーのTightVNCサーバーをセットアップします。
GUIには、GNOMEやUnityのより軽量な代替手段であるXFCEを使用します。
VNCサーバー(タイトVNC)とデスクトップ(XFCE)をインストールする
まず、TightVNCサーバーとXFCEデスクトップ環境をインストールすることから始めます。
sudo apt install gnome-core xfce4 firefox xfce4-goodies tightvncserver
次に、ユーザー「miki」としてログインするためのパスワードを使用してVNCサーバーを構成する必要があります
vncserver
また、パスワードのみを表示するように求められます。カーソルとキーボードを制御せずに、観客としてのみVNCセッションに接続する場合は、パスワードが必要です。このパスワードは、メインのパスワードとは異なる必要があります。観客を配置する予定がない場合は、パスワードのみを表示するように入力しないことを選択できます。このプロセスが完了すると、VNCインスタンスがポート5901で起動され、VNCserverはこのポートを:1としてカウントします。 VNCの複数のインスタンスを開始すると、複数のディスプレイポートがあり、インスタンスごとに両方の数が1ずつ増加し、2と5902などになります。構成を続行するには、実際にVNCサーバーのすべてのインスタンスを強制終了する必要があります。次のコマンドでこれを行います:
vncserver -kill :1
これが完了したら、VNCサーバーの構成ファイルを編集して、VNCサーバーへの接続時に開始するデスクトップ環境を選択できます。私が話しているファイルはxstartupと呼ばれ、〜/dirの隠し.vncディレクトリ内にあります。最初にこのファイルをバックアップしましょう
mv ~/.vnc/xstartup ~/.vnc/xstartup.backup
そして、きれいな状態から新しいファイルを作成します
nano ~/.vnc/xstartup
この空のファイルに、次の数行を貼り付けます:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
tihsファイルに言い訳可能なビットを追加する
sudo chmod +x ~/.vnc/xstartup
次に、VNCサーバーを再起動できます
vncserver
VNCサーバーへの接続
次に、VNCサーバーに接続して、セットアップが機能しているかどうかを確認する必要があります。たとえば、VinagreやRemote Desktop Viewerなど、任意のVNCクライアントを使用できます。最初にインストールして起動します
sudo apt install vinagre
サーバーの名前、ポート5901を入力し、[接続]をクリックします。パスワードの入力を求められたら、XFCEに入る必要があります
無制限の数のコンピューターからこのセッションに接続できますが、その場合、すべてが1つのマウスカーソルを制御し、同じセッションになります。一部のユーザーが表示専用のパスワードを入力した場合(パスワードを作成した場合)、カーソルを制御することはできませんが、単一のセッションで1つの同じ画面を見ることができます。
複数のユーザー
互いに干渉しない複数のVNCセッションを持つことが可能です。これは、任意の数のユーザーを作成することによって行われ、各ユーザーは独自のディスプレイポートとVNCサーバーの独自のインスタンスを持ちます。そして今度は、彼はデスクトップ環境の独自のインスタンスを実行します。または、それは完全に別個のDEである可能性があります。まず、新しいユーザーを追加することから始めましょう
sudo adduser newuser
次に、そのユーザーとしてログインします
su newuser
そして、新しいユーザーのパスワードを作成しましょう
vncserver
パスワード以外に、これはポート5902でリッスンする新しいプロセスも作成しました。構成ファイルを編集できるようにするには、このプロセスを強制終了する必要があります。
vncserver -kill :2
そして、実際に以前からプロセスを繰り返す必要があります。最初にxstartupファイルをバックアップします
mv ~/.vnc/xstartup ~/.vnc/xstartup.backup
次に、新しいものを最初から作成します
nano ~/.vnc/xstartup
以下の過去3行
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
そしてそれを実行可能にします:
sudo chmod +x ~/.vnc/xstartup
次に、vncserverを実行してプロセスを起動します
vncserver :2
これで、ポート5902に接続して、個別のセッションを行うことができます。
SSHトンネリングの設定方法
これまでのところ、ディスプレイポート(この場合は5901と5902)で直接接続することができました。しかし、これらのポートがファイアウォールによって閉じられている場合はどうなりますか。何らかの理由でそれらを開くことは実用的ではありません。その場合の解決策があり、SSHトンネリングを使用できます。ポート22またはサーバーでのSSHアクセスに使用するその他のポートを使用して、VNCサーバーがローカルホストでポート5901または5902で実行されているVNCビューアーをだますことができます。このコマンドを使用して、SSHトンネルを確立します。
ssh -L 5902:127.0.0.1:5902 [email protected]
強調表示された部分を必ずIPアドレスとユーザー名に変更してください。
この後、VinagreまたはRemminaを起動し、アドレスとしてlocalhot:5902を入力できます。 SSH接続がアクティブである限り、リモートデスクトップはローカルホスト上にあると見なされ、sshポートを介してトラフィックをサーバーにルーティングします。
systemdユニットの作成
これは、SSHを介してユーザーとサーバーを手動で設定する場合はすべて問題ありませんが、サーバーを再起動するたびにやり直す必要があります。それを避けるために、systemdユニットファイルを作成しましょう。それは古い学校のスタートアップスクリプトの新しい派手な名前です。実際には、2人のユーザーに対して2つ作成する必要があります。最初に、1つ作成します
sudo nano /etc/systemd/system/[email protected]
はい、この構成を配置します
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=miki
PAMName=login
PIDFile=/home/miki/.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
次に、別のものを作成します:
sudo nano /etc/systemd/system/[email protected]
そして、同じものを貼り付けます。どちらの場合も、自分のユーザーのユーザー名を変更します。ここで、古いプロセスがまだ実行されている場合はそれらを強制終了し、ユニットファイルをリロードする必要があります
vncserver -kill :2
vncserver -kill :1
sudo systemctl daemon-reload
そして、ユニットファイルの使用を開始します
sudo systemctl start vncserver@1
sudo systemctl start vncserver@2
また、起動のたびにvncサーバーが必要な場合は、上記と同じようにもう一度実行し、起動する代わりに有効にします。
結論
このチュートリアルでは、Ubuntu16.04で2人のユーザーを使用してVNCサーバーをインストールおよび構成する方法を学習しました。ご質問やご意見がございましたら、お気軽にコメントをお寄せください。