ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

Microsoft Azureで仮想マシンを作成してみる [2]

前記事に続いて、Azureで作成した仮想マシンへリモート接続する環境を構築していく。

SSHによる仮想マシンへの接続

最初にAzureで作成した仮想マシンIPアドレスを知る必要があるが、その方法は前記事に書いた。

当然ながら、以降の操作を行うには、先にAzureポータルサイト仮想マシンを起動しておく必要がある。

なお、本記事では、仮想マシン・テンプレートとしてUbuntu Server 20.04を選択したことを前提として説明していく。

仮想マシンSSH経由で接続するには、下のコマンドを使う。

$ ssh -i ~/.ssh/id_rsa azureuser@VM_IP_ADDRESS

Azureポータルサイトでの仮想マシン作成時に、ssh-keygenコマンドによって生成された~/.ssh/id_rsa.pubの内容を公開キーとして指定したなら、デフォルトでは秘密キーは~/.ssh/id_rsaに格納されているはずだ。上のコマンドでは、このファイルを指定してSSHクライアントにより仮想マシンへの接続を試みている。

SSHクライアントで仮想マシンへ接続すると、以下のようなメッセージが表示されてログインできる。

Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-1041-azure x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Jul  2 03:01:48 UTC 2023

  System load:  0.08              Processes:             138
  Usage of /:   5.2% of 28.89GB   Users logged in:       0
  Memory usage: 4%                IPv4 address for eth0: 10.0.0.4
  Swap usage:   0%

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

ssh-keygenコマンドによるSSHキー組の作成時にパスフレーズを設定した場合は、それをパスワードとして入力することを求められるので、正しいパスフレーズを入力すれば仮想マシンにログインできる。

仮想マシンへの接続ログイン時にパスフレーズ入力を省略したい場合は、ローカル側で以下のコマンドを実行すれば良い。

$ eval `ssh-agent`
$ ssh-add ~/.ssh/id_rda

Macの場合、ssh-addコマンドを下のように変える。

% ssh-add --apple-use-keychain ~/.ssh/id_rda

毎回ssh-keygenコマンドに上記のオプションを指定するのが面倒なら、以下のような内容の~/.ssh/configを作成しておくと良い。

```bash:~/.ssh/config Host VM_HOST_NAME HostName VM_IP_ADDRESS Port 22 User azureuser UseKeychain yes IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes TCPKeepAlive yes ServerAliveInterval 60 ServerAliveCountMax 5

  
このファイルを作成しておけば、下のコマンドによって仮想マシンへ接続できるようになる。
  

$ ssh VM_HOST_NAME

  
# リモートデスクトップによる仮想マシンへの接続

リモートデスクトップを使ってAzureの仮想マシンへ接続したい場合は、仮想マシン側のRDP用受信ポートを開放しておく必要がある。  
  
Azureポータルサイトのホーム画面 > [Virtual Macines] > 目的の仮想マシン > [ネットワーク]の画面でそれができる。この画面の[ 受信ポートの規則を追加する ]を押すと、下のような画面になる。  

[f:id:Vedfolnir:20230702115409p:plain]

この画面の **[サービス]** メニューから **[RDP]** を選んで、[ 追加 ]を押せば、仮想マシンへRDP用受信ポートを追加できる。  
  
Ubuntu ServerなどのCLIベースの仮想マシン・テンプレートを選択した場合は、仮想マシン上にGUIデスクトップは存在しないので、それを先にインストールしておく必要がある。  

Linux用のGUIデスクトップはいくつか種類があるが、UbuntuデフォルトのGNOMEは描画処理が重くて、リモートデスクトップでの利用には適していないと思う。GNOMEの代わりにXfceやMATEを利用することを薦める。あえてGNOMEを利用したい場合は、下のリンクを参照してほしい。  

[https://kogelog.com/2020/05/12/20200512-01/:embed:cite]

XfceあるいはMATEを利用する場合は、以下のコマンドをSSH接続中の仮想マシン上で実行することでインストールできる。  

- Xfce

<pre style="background-color:#1f1f1f;"><code style="color: #ffffff;">$ sudo apt update
$ sudo apt install -y xubuntu-desktop
$ sudo apt install -y xfce4 xfce4-goodies
</code></pre>

- MATE

<pre style="background-color:#1f1f1f;"><code style="color: #ffffff;">$ sudo apt update
$ sudo apt install -y ubuntu-mate-desktop
</code></pre>

初めて仮想マシンへGUIデスクトップをインストールした場合は、下のようなディスプレイマネージャの選択を求める画面が表示されるが、この画面ではどちらを選んでも問題ない。  

[f:id:Vedfolnir:20230702125501p:plain]

リモートデスクトップを使ってAzureの仮想マシンへ接続したい場合は、仮想マシン側にRDPサーバーをインストールして稼働状態にしておく必要がある。以下のコマンドによってそれを行える。  
  
<pre style="background-color:#1f1f1f"><code class="language-bash" style="color: #ffffff">$ sudo apt install -y  xrdp
$ sudo systemctl enable xrdp
$ sudo adduser xrdp ssl-cert
$ echo "xfce4-session" > ~/.xsession
$ sudo service xrdp restart
</code></pre>
  
上記は、GUIデスクトップとしてXfceを利用する場合で、MATEの場合は`echo`コマンドを下のように変える。  
  
<pre style="background-color:#1f1f1f"><code class="language-bash" style="color: #ffffff">$ echo "mate-session" > ~/.xsession
</code></pre>
  
RDP経由で仮想マシンへ接続する場合、SSH認証情報は利用できないので、通常の方法でログインするしかない。そのため、RDP接続用に最低でも一つのユーザーの通常ログイン用パスワードを設定する必要がある。以下のコマンドによって、仮想マシン上のユーザーのパスワードを設定しておく。  
  
<pre style="background-color:#1f1f1f"><code class="language-bash" style="color: #ffffff">$ sudo passwd azureuser
</code></pre>
  
以上の操作が済めば、仮想マシン側でのRDP経由接続の受け入れ準備が整う。

あとは、ローカル側からリモートデスクトップ・クライアントを使って仮想マシンへ接続することになる。UbuntuならRemmina、MacならMicrosoft Remote Desktopが有名どころだろう。  
  
RDPクライントから仮想マシンへ接続する場合は、その前に必ずローカル側で下のコマンドを実行しておく。  
  

$ ssh -L 3389:localhost:3389 azureuser@VM_HOST_NAME

  
このコマンドを実行すると、仮想マシンへSSH接続できるが、同時にローカル側でポート3389への通信をリモート(仮想マシン)側のポート3389へ転送する状態になる。この状態でRDPクライントから`localhost:3389`へ接続すれば、仮想マシンへRDP経由で接続できる。  
  
Microsoft Remote Desktopなら、下のような内容のリモート接続設定を作成して、それを使ってAzure仮想マシンへ接続する。  

[f:id:Vedfolnir:20230702220945p:plain]

RDPクライントで仮想マシンへ接続しようとすると、毎回下のような警告が表示されるが、この画面では [Continue] を押せば、仮想マシンへの接続が継続される。  

[f:id:Vedfolnir:20230702230314p:plain]

仮想マシンへ接続されると、下のようなログイン画面が表示されるので、上記で設定したユーザーのパスワードを入力すればログインできる。  

[f:id:Vedfolnir:20230702231336p:plain]

[f:id:Vedfolnir:20230702233824p:plain]

# X2Goによる仮想マシンへの接続

MicrosoftのAzureヘルプ情報サイトでは、xrdp/RDPよりもX2Goというリモートデスクトップの方が描画性能が高いので、X2Goを使うことが推薦されている。  

[https://learn.microsoft.com/ja-jp/azure/lab-services/how-to-enable-remote-desktop-linux:embed:cite]

実際に使ってみると、たしかにX2Goの方が描画が速いので、私もいまはX2Goを使っている。  
  
Ubuntuベースの仮想マシンにX2Goサーバーをインストールするには、下のコマンドを実行すれば良い。    
  

<pre style="background-color:#1f1f1f"><code class="language-bash" style="color: #ffffff">$ sudo apt install -y x2goserver x2goserver-xsession
</code></pre>
  
ローカル側にX2Goクライアントをインストールするには、Ubuntuなら下のコマンドによってできる。  
  

$ sudo apt install -y x2goclient

  
Macなら、下のサイトからインストーラをダウンロードできる。  

[https://wiki.x2go.org/doku.php/download:start:embed:cite]

なお、Macでx2goclientを使う場合は、先に<a href="https://www.xquartz.org/" target="_blank">XQuartz</a>をインストールしておく必要がある。

[f:id:Vedfolnir:20230703080829j:plain]

x2goclientのAzure仮想マシン用セッション設定は、下のような内容になる(**[Session name]** は任意の名前、**[Host]** には仮想マシンのIPアドレスを入力)。  

[f:id:Vedfolnir:20230703070653j:plain]

なお、仮想マシンへのリモートデスクトップ接続にX2Goだけを利用する場合、仮想マシン側の受信ポートは SSH (22) だけが使用されるので、RDP (3389) は削除しておいた方が良い。

# 補足情報

以下のサイトに、GNOME/xrdp、MATE/X2Go、Xfce/X2Goを一括でインストールできるシェルスクリプトが掲載されている。
このシェルスクリプトを利用すると、一度のコマンド実行でこれらの組み合わせをUbuntuベースのAzure仮想マシンへインストールできる。  

[https://github.com/Azure/LabServices/blob/main/TemplateManagement/PowerShell/LinuxGraphicalDesktopSetup/GNOME_MATE/ReadMe.md:embed:cite]

[https://github.com/Azure/LabServices/blob/main/TemplateManagement/PowerShell/LinuxGraphicalDesktopSetup/XFCE_Xubuntu/ReadMe.md:embed:cite]
  
  
**【参照リンク】**

[https://learn.microsoft.com/ja-jp/azure/virtual-machines/linux-vm-connect?tabs=Linux:embed:cite]

[https://www.hiroom2.com/ubuntu-2004-xrdp-xfce-ja/:embed:cite]

[https://www.hiroom2.com/ubuntu-2004-xrdp-mate-ja/:embed:cite]

[https://www.digitalocean.com/community/tutorials/how-to-set-up-a-remote-desktop-with-x2go-on-ubuntu-20-04:embed:cite]

[blog:g:4207112889945342980:banner]