- Cloudflare tunnelをローカルで作成する
- Cloudflaredを対象マシンにインストールする
- クレデンシャルを対象マシンに転送、設定ファイル記述、起動
- ローカルからアクセス
Cloudflare tunnelをローカルで作成する
すでにcloudflaredでログインは完了しているものとする。
cloudflared tunnel create <NAME>
あとで転送する、~/.cloudflared/<ID>.json
というようなファイルが作成される。<ID>
は[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}
の形式。
Cloudflaredを対象マシンにインストールする
rootで実行。rootではない場合、dpkg
にsudo
つける。
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && dpkg -i cloudflared-linux-amd64.deb
クレデンシャルを対象マシンに転送、設定ファイル記述、起動
クレデンシャルの転送先は /root/.cloudflared/<ID>.json
、設定ファイルは以下のように書いて /root/.cloudflared/config.yml
に設置
tunnel: <ID>
credentials-file: /root/.cloudflared/<ID>.json
ingress:
- hostname: hoge.example.com
service: http://localhost:80
- hostname: fuga.example.com
service: ssh://localhost:22
- service: http_status:404 # 必須
また、ローカルでDNSとtunnelの結びつけを行っておく。
cloudflared tunnel route dns <id> <hostname>
最後に起動する。
sudo cloudflared service install
sudo systemctl start cloudflared
sudo systemctl enable cloudflared
ローカルからアクセス
ProxyCommand
でcloudflared accessを介さないといけないのが唯一の落とし穴。
Host sandbox-c
HostName fuga.example.com
User <USER>
IdentityFile ~/.ssh/<PRIVATE KEY>
ProxyCommand cloudflared access ssh --hostname %h