2026年版・Cloudflare Tunnel で WSL 環境に SSH 接続する
過去にほぼ同じことをしたんだけど、メインマシンを変えたので設定をやり直した。何か前回よりも簡単だった感覚があるのでメモ。
- 過去記事 : 2025-01-23 Cloudflare Zero Trust Tunnel を利用して自宅の Ubuntu 機にインターネット経由で SSH 接続する
今回はデスクトップ PC の WSL 環境に対して、外出先でノート PC から SSH 接続をしたかったので、その前提での設定。
ホストマシンは cloudflared と ssh.service (sshd) を設定する
ということでまずはデスクトップ PC の WSL 環境で clouflared をインストールする。Cloudflare の管理画面でインストール用コマンドが全て提供される。以下はそのコピペ。
# Add Cloudflare GPG Key
$ sudo mkdir -p --mode=0755 /usr/share/keyrings
$ curl -fsSL <https://pkg.cloudflare.com/cloudflare-main.gpg> | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
# Add This Repo To Your Apt Repositories
$ echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] <https://pkg.cloudflare.com/cloudflared> any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
# Install cloudflared
$ sudo apt-get update && sudo apt-get install cloudflared
以上で cloudflared コマンドがインストールできる。この作業はホスト側もクライアント側も同じ。
ホスト側 (SSH 接続される側) では、以下のように cloudflared のサービスを有効にしておく。
# Install As Service (Host Only)
$ sudo cloudflared service install 【トークン・Cloudflare 管理画面で確認できる】
WSL も現在は以下のように、/etc/wsl.conf の設定で systemctl が有効になっているはず。
[boot]
systemd=true
なので $ systemctl status cloudflared とかで状況を確認し、必要であれば enable すれば良い。
- Cloudflare Tunnels の管理画面で「公開アプリケーションを追加」し
my-pc.example.comのようにサブドメインを作る → DNS が自動で設定される - Cloudflare Access の管理画面でメルアドでのニ要素認証を追加しておく
- コレにより、ブラウザで上述の URL にアクセスするとまずメルアド認証 → その後、WSL のユーザ名・パスワードないしは SSH 鍵を入れて SSH ログインできるようになった
パスワード認証自体の有効化・無効化や、鍵認証への切り替えなどは、ホスト環境の /etc/ssh/sshd_config にて設定し $ systemctl restart ssh.service で再起動する。
クライアントにも cloudflared を入れて SSH Config を書く
SSH 接続をするクライアント側にも前述のコマンドで cloudflared をインストールする。
~/.ssh/config で以下のように cloudflared を経由して接続するように書けば良い。
Host my-pc
HostName my-pc.example.com
User 【WSL ユーザ名】
ProxyCommand cloudflared access ssh --hostname %h
最初は鍵認証ではなくパスワード認証で接続を確認したのだが、その際にパスワード認証を自動化する sshpass というコマンドラインツールがあることを知ったので、それも紹介しておく。以前にも同等のことを expect コマンドを使って実現したことがあるのだが、それを一つのコマンドにしてくれてる感じ。なんで当時このコマンドを入れなかったんだろう?w
- 過去記事 : 2018-09-19 SSH 接続のパスワード入力を自動化するシェルスクリプトを作ってコマンド化した
$ sudo apt install sshpass
$ sshpass -p '【WSL パスワード】' ssh my-pc
こんな風にすればパスワード認証で SSH 接続もできる。
当然ながら、接続が確認できたらホストマシンの sshd で鍵認証のみ有効にするよう変更しておいた方がセキュア。