前記事に続いて、Azureで作成した仮想マシンへリモート接続する環境を構築していく。
SSHによる仮想マシンへの接続
最初にAzureで作成した仮想マシンのIPアドレスを知る必要があるが、その方法は前記事に書いた。
当然ながら、以降の操作を行うには、先にAzureポータルサイトで仮想マシンを起動しておく必要がある。
なお、本記事では、仮想マシン・テンプレートとしてUbuntu Server 20.04を選択したことを前提として説明していく。
$ 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
このファイルを作成しておけば、下のコマンドによって仮想マシンへ接続できるようになる。
# リモートデスクトップによる仮想マシンへの接続 リモートデスクトップを使って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]