WSL2のUbuntuにTailscaleを使ってSSH接続する


環境

Ubuntu 20.04
tailscale 1.8.7

インストール

まずは、Tailscaleにブラウザからログインしましょう。
Google, Microsoft, GitHubアカウントでログインできます。
ログインするだけで特に何かを入力する必要はありません。

次に、公式のダウンロードページにしたがってUbuntuにtailscaleをインストールします。

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.gpg | sudo apt-key add -
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.list | sudo tee /etc/apt/sources.list.d/tailscale.list

sudo apt-get update
sudo apt-get install tailscale

起動

WSLではsystemdが動いていないためサービスを自分で実行します。

sudo tailscaled 

通常ではtailscale upでブラウザから認証できるのですが、WSLではできないようなので認証キーを発行して認証を行います。
ブラウザのSettingsにあるAuth Keysに行くと、デフォルトでOne-off keyが選択されているので特に理由がなければこのまま発行します。
発行後、キーを指定してログインします。

sudo tailscale up --authkey=tskey-9e85d94f237c54253cf0

成功すると、webにこのマシンが登録されています。
これ以降はtailscale upを実行しなくてもtailscaledが動いていれば自動的にログインされるようです。

tailscaleのテストサーバーにpingしてみて通ればOKです。

ping 100.101.102.103

IPv6を使っている場合、無効にする必要があるかもしれません(私の環境では動いたので設定していません)。

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

クライアント側

クライアント側でも同じようにtailscaleをインストールします。
systemdを使っている場合サービスの起動を忘れないようにしましょう。

sudo systemctl enable --now tailscaled

クライアントからWSL2にpingが通れば(もちろんtailscaleのIPを使って)終わったも同然です。

SSH

WSL2側で忘れずにsshサービスを起動します。

sudo service ssh start 

後はクライアントからsshするだけです。簡単!

参考