リモートにある Ubuntu マシンと Windows マシンを使えるようにしたいので検討中

Ubuntu 22.04 がリリースされたので、18.04 を入れてあったマシンへ新規インストールをしてみています。

それで、リモートから自宅の Ubuntu マシンと Windows マシンを使えるようにしたいので検討中です。インターネットにグローバルで SSH ログインができるマシンがあるので、それを経由して設定をする予定です。

下記のような感じで SSH 接続ができるようにすることを考えています。

ssh -A -l user001 www.example.jp -t ssh -p 2222 localhost

ローカルマシンの Ubuntu 22.04 (ubuntu2204) からグローバルの www.example.jp へは autossh のリバースポートフォワードを使って SSH の通信路を用意します。www.example.jp:2222 へ SSH ログインすると ubuntu2204 へ SSH ログインできるようにします。

手元に macOS マシンの mbp があるとして、mbp から上記のコマンドで多段 SSH ログインをすると、ubuntu2204 へ SSH ログインができるようになるということです。

SSH で接続ができたら Chrome Remote Desktop の設定をして、ubuntu2204 へ Chrome ブラウザからアクセスできるようにします。そうすると、ubuntu2204 の Remmina(RDP クライアント)が使えるようになるので、それを使って自宅の Windows マシンへ Windows リモートデスクトップでアクセスすれば良いと考えています。

macOS – Linux – Windows とつなぐので、キーボードのマッピングがどこかでうまくいかないかもしれなく、日本語入力がうまくできないという可能性はあります。

その場合は、VPN 構築をして VPN 経由で Windows リモートデスクトップを使うという方針にする予定でいます。

今日は Ubuntu 22.04 をインストールして openssh-server を追加、スワップメモリの設定、Chrome Remote Desktop の設定をした程度ですが、少しずつ作業をしていくつもりです。ちなみに openssh-server をインストールするには次のようにします。

sudo apt update && sudo apt -y upgrade
sudo apt -y install openssh-server

ちなみに SSD のディスクへ Linux をインストールすると、swapfile をどうするのかという話がでてきます。SSD だと /swapfile が swap として用意されるようなのですが、ここへのアクセスが頻繁に起こると SSD の寿命が短くなりそうで嫌ですよね。自分は USB メモリを別途用意して、それをマウントするということをよくしているのですが、今回用意したマシンでは HDD を2台接続してあるので、そこにスワップファイルを用意しました。

HDD は /mnt/hdd01 のような感じで自動マウントするように /etc/fstab へ設定済みだとします。/mnt/hdd01/swapfile のようなファイルをスワップファイルとして用意して、これを使うように /etc/fstab に設定を書いて対応しました。

他にもいろいろ作業をしていますが、具体的な手順は次の通りです。

ディレクトリ名は英語が良いので下記で変更

LANG=C xdg-user-dirs-gtk-update

google-chrome-stable_current_amd64.deb など、deb ファイルをインストールするには、依存関係もチェックしてくれる gdebi が便利なのでインストール。あらかじめダウンロードしておいた Google Chrome の deb ファイルをインストール

sudo apt -y install gdebi
sudo gdebi ~/Downloads/google-chrome-stable_current_amd64.deb

キーボードは A の左を Ctrl キーにしたいので XKBOPTIONS へ ctrl:swapcaps を指定します。ここでは GUI で作業をしていたので gedit コマンドを使っていますが、vi や nano や emacs コマンドを使ってコンソールで編集しても良いです。

$ sudo gedit /etc/default/keyboard 
$ cat /etc/default/keyboard 
(略)
XKBMODEL="pc105"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS="ctrl:swapcaps"
(略)

スワップメモリの状態は free コマンドや swapon –show コマンドでわかります。

$ free -m
(略)
$ sudo swapon --show
(略)

swapoff でスワップメモリの利用を停止することもできます。

sudo swapoff -a

起動時にスワップメモリを使わないようにするには、/etc/fstab の swap ファイルの指定行の先頭に # をつけてコメントにします。

$ sudo gedit /etc/fstab
$ cat /etc/fstab
(略)
#/swapfile  none  swap  sw  0  0
(略)

swapfile を作成するには次のようにします。

sudo fallocate -l 32G /mnt/hdd01/swapfile
sudo chmod 600 /mnt/hdd01/swapfile
sudo mkswap /mnt/hdd01/swapfile
sudo swapon /mnt/hdd01/swapfile

/mnt/hdd01 は先にマウントがされている必要があるので swap ファイルについて /etc/fstab へ指定するときには、基本的に最後に書いておくと良いはずです。ここでは次のようにしました。

$ cat /etc/fstab
(略)
/mnt/hdd01/swapfile  none  swap  sw  0  0
#/swapfile  none  swap  sw  0  0
(略)

ついでに Chrome Remote Desktop も先に設定してしまいます。資料としては「Compute Engine での Linux 向け Chrome リモート デスクトップのセットアップ  |  Cloud アーキテクチャ センター  |  Google Cloud」といったものも参考になります。

普段使うマシン(ここだと mbp)で Chrome を起動し、Google アカウントでログインした状態で リモート アクセス – Chrome リモート デスクトップ https://remotedesktop.google.com/access へアクセスします。

そこで左のメニューから「SSH 経由でセットアップする」を選択して、「開始」をクリックしてから表示される指示に従います。

ここからは ubuntu2204 へ SSH ログインして作業をします。chrome-remote-desktop_current_amd64.deb をダウンロードしてインストールします。

$ cd ~/Downloads
$ wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
$ sudo gdebi ~/Downloads/chrome-remote-desktop_current_amd64.deb
(略)

mbp の Chrome で「次へ」をクリックすると、各 OS で実行するコマンドが表示されます。Ubuntu は Debian 系なので、Debian で設定するためのものをコピーして ubuntu2204 で実行します。PIN コードの入力が必要です。ここで指定した PIN コードが実際にリモートアクセスするときに必要になるので忘れないようにします。

$ DISPLAY= /opt/google/chrome-remote-desktop/start-host \
  --code="(略)" \
  --redirect-url="https://remotedesktop.google.com/_/oauthredirect" \
  --name=$(hostname)
Enter a PIN of at least six digits: (6文字以上の数字でPINコードを入力)
Enter the same PIN again: (上で入力したPINコードを再度入力)

これで設定がうまくいくと、mbp の Chrome で Chrome Remote Desktop の画面をリロードすると、ubuntu2204 が一覧に追加されます。開いて使ってみると良いでしょう。

ちなみに、 Chrome Remote Desktop は systemctl コマンドで無効化できます。user001 用のものを無効化するには systemctl disable を使います。

$ sudo systemctl disable chrome-remote-desktop@user001
(略)

disable を enable とすれば有効化、start とすれば開始、stop とすれば停止になります。

同じカテゴリの記事: Linux