📘

Tailscaleで作るリモート開発環境構築ガイド

に公開

はじめに

グローバルIPが割り当てられない環境(マンション, 職場, 研究室)にある自宅のWindowsマシンに、出先のノートPCからSSHアクセスしてリモート開発できる環境を作りたい。しかし、グローバルIPがないとLAN外から接続できませんね。

そこで、この記事では、VPNを構築して出先から自宅のWindowsに接続する方法を紹介します。

特に、WSL2はWindowsでの開発環境として非常に便利であり、本記事ではWSL2へのリモートアクセスを主な目的としてVPN環境を構築します。WSL2に構築した機械学習サーバーへの接続などに応用できます。

VPNの構築にはOpenVPNやWireGuardなどの選択肢がありますが、本記事ではTailscaleを使って最小限の手順でVPN環境を構築します。

イメージ図

Tailscaleにデバイスを登録すると、自動でVPNを貼ってくれます。
しかも可能ならばp2p接続を張ってくれます。

構築手順

Tailscaleに登録

  1. Tailscaleにアクセスしアカウントを作りましょう。

    alt text
    text

  2. 各デバイスにTailscaleのローカルソフトをインストールします。

    今回の用途ではWindowsデスクトップとノートPCにそれぞれインストールして下さい。

    text

  3. 無事にインストールが完了すれば、これでVPN構築完了です。

    text

Windows11にSSHサーバーを建てる

Windows11で下記コマンドを実行し、SSHサーバーを建てます。

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

これでノートPCからWindows11にSSHアクセスできるようになってます

ssh <usename>@<tailscaleで振られたアドレス>

WSLにSSHサーバーを建てる

WSL2で下記コマンドを実行します。Windows11側のSSHサーバーとポートが被らないように、今回は50022番ポートでSSHサーバーを建てます。

sudo apt install openssh-server
sudo systemctl enable ssh
sudo ssh-keygen -A
sudo sed -i -e 's/^#Port 22/Port 50022/' /etc/ssh/sshd_config
sudo sed -i -e 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo systemctl start ssh

これでノートPCからWSL2にSSHアクセスできます

# まずWindows11にSSH
ssh <usename>@<tailscaleで振られたアドレス>

# 接続後にWSL2にSSH
ssh <usename>@127.0.0.1 -p 50022

.ssh/configを設定し簡単にアクセス出来るようにしよう

ノートPCの.ssh/configを下記のように設定すれば、多段SSHが簡単にできます

Host home-win11
    HostName <tailscaleで振られたアドレス>
    User <username>

Host home-wsl
    HostName localhost
    Port 50022
    User <username>
    ProxyJump home-win11

下記コマンドでWSL2にSSHアクセスできます

ssh home-wsl

公開鍵を登録

公開鍵を登録しパスワード入力不要でSSHできるようにします。

Windows11に公開鍵登録

scp ~/.ssh/id_ed25519.pub home-win11:C:\\ProgramData\\ssh\\administrators_authorized_keys

ssh home-win11 icacls.exe C:\\ProgramData\\ssh\\administrators_authorized_keys /inheritance:r /grant Administrators:F /grant SYSTEM:F

WSL2に公開鍵登録

ssh-copy-id home-wsl

おわりに

Tailscaleを使用したリモート開発環境構築は以上になります。
Tailscaleを使うと驚くほど簡単に設定できますね。

Discussion