• ライフサイエンス分野の研究をIT技術で支援します

    Ubuntu18.04LTSのクラウドPCに、リモートデスクトップ接続する手順の紹介。
    今回は、AWSで借りたクラウドPCに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 :(ディスプレイ番号)