2021年8月25日水曜日


参照:https://biomodeling.co.jp/2020/04/30/ubuntu18%E3%81%AB%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/


Ubuntu18.04LTSのクラウドサーバーに、リモートデスクトップ接続する手順の紹介。
今回は、AWSで借りたクラウドサーバーにGNOMEとtigervncをインストールした。
(2020/4/30現在)

以下は、インスタンス 起動後、sshでログイン後からの手順。
使用したAmazon マシンイメージ:Deep Learning AMI (Ubuntu 18.04) Version 28.0

sudo apt update
sudo apt upgrade
sudo reboot

今回は、upgrade時に次のエラーが発生。

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

次のコマンドで、解決した。参考URL

(注: 上記エラーが出た時のみ、次のコマンドを実行する。)
sudo dpkg --configure -a

 
 

reboot後、少し待って再ログインし、次のコマンドで、GNOMEとtigervncをインストールする。

sudo apt install ubuntu-gnome-desktop
sudo apt install tigervnc-standalone-server

次のコマンドでパスワード設定のためにディスプレイを一旦作成する。

vncserver :1

ここで、パスワードの設定が求められるので設定する。
このパスワードはクライアントPCから、サーバーにリモートデスクトップ接続をする際に入力する。
次の質問は、nを入力する。
Would you like to enter a view-only password (y/n)? n

emacsを使う人は、ここでemacsをインストールする。

sudo apt install emacs

~/.vnc/xstartupを次の内容にする。(emacsを使用する場合: emacs .vnc/xstartup)

#! /bin/sh

exec gnome-session &

先ほど作ったディスプレイ:1をkillして再起動する。killしないでrebootすると、:1に正常にアクセスできない(staleになっている)。

vncserver -kill :1
sudo reboot

次にログインをする際には、sshのコマンド末尾に、次のオプションをつける。

-L 5901:localhost:5901

このオプションで、サーバーの5901番ポートと、ローカルホストの5901番ポートに接続可能となる。
VNCサーバーで:1のディスプレイを作成すると5901番を使用する。
ログイン後、次のコマンドでリモートアクセスするディスプレイを作成する。

vncserver :1

ターミナルはそのままにして、クライアントPCからサーバーへのリモートデスクトップ接続の操作を行う。ターミナルからのSSH接続でサーバーの5901番ポートとクライアントPCの5901番ポートを接続しているので、ログアウトしたり、ターミナルを終了すると、リモートデスクトップ接続はできない。
(MacOSXの場合)

・Finderを起動
・画面上端のメニュー(Finderのメニュー)から"移動"-> "サーバーへ接続"を選択する
・"サーバーへ接続"のダイアログに、vnc://localhost:5901
を入力する。
・VNC接続のパスワードを聞かれるので、上で設定したパスワードを入力すると、サーバーにリモートデスクトップ接続する。

この手順は、MacOSXの標準機能のみでリモートデスクトップ接続が可能。しかし、この方法で接続すると、クライアントPCとクリップボードを共有できなかった。VNC ViewerをMacにインストールして、localhost:5901に接続すると、クリップボードの共有は可能だった。

(Windowsの場合)
UltraVNCで接続可能だった。

以下、コマンドは、サーバー側でディスプレイの確認・削除・作成で使用するもの。

ディスプレイの確認:
vncserver -list

ディスプレイの削除:
vncserver -kill :(ディスプレイ番号)

ディスプレイの作成:
vncserver :(ディスプレイ番号)