no-image

PuTTYでCloudflare Tunnelを使って自宅のSSHサーバに接続する

Cloudflare Tunnelトンネルを使うとプライベートIPアドレスしか持たないような環境でも外部からアクセスが可能になります。

HTTP/HTTPSの場合は簡単で、Cloudflaredでドメインの設定(ネームサーバー等。たくさん記事があるので省略)を終えたら、Cloudflaredのダッシュボードから次を開きます。

  • Access
    • Tunnels
      • Create a tunnel

これで割り当てたドメイン名でアクセスできるようになります。
HTTPSも自動で設定されているのでとても楽です。

SSHの場合はもうひと手間必要です。

  • [Connect with SSH through Cloudflare Tunnel]()

詳しくは上記の記事の「Connect to SSH server with cloudflared access」の通りですが、クライアント側にもcloudflaredを入れる必要があります。

WindowsでPuTTYを使っている場合は、次を参考にしました。

user7633
'22 年 2月

Simply in putty, go to proxy settings, select local, and configure the commandline to be

cloudflared.exe access ssh --hostname %host

(no \n at the end) and save the session as normal. works for me

まずWindows用のfloudflaredをインストールします。

なぜか64bitインストーラーが起動しても進まないので、手っ取り早くインストールするならコマンドプロンプトで次のようにする。

> winget install --id Cloudflare.cloudflared
見つかりました cloudflared [Cloudflare.cloudflared] バージョン 2023.10.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/cloudflare/cloudflared/releases/download/2023.10.0/cloudflared-windows-amd64.msi
  ██████████████████████████████  17.1 MB / 17.1 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

AMD64版なのになぜかインストールされたのは C:\Program Files (x86)\cloudflared\cloudflared.exe です。
このパスを残しておきます。

PuTTYの接続画面で次の項目を設定します。

  • Connection

    • Proxy
  • Proxy type: Local(run a subprogram to connect)

  • Command to send to proxy(for some types): "cloudflared.exeへのパス" access ssh --hostname %host`

PuTTYはホスト名だけCloudflare Tunnelで設定したものにして、他の設定はローカルで接続するのと同等でOK
公開鍵認証で接続できました。