【技術記事】Code-Server + Cloudflare Tunnels/Access で疑似SSH
Pozdrav!わたしです。
今回はSSH周りでかなり面倒なセットアップをやったので、備忘録がてら記載します。
前提条件
使用PCは2026-08-05現在通っている就業移行支援施設の共用PCです。
以下はPCスペック。
- Lenovo Thinkpadのなにか
- CPU: Intel Core i3(11世代)
- RAM: 4.00GB
- Win11
共用PCのため、再起動時に各種データはごく一部を除きリセットされます。
またゲスト用アカウントでのログオンを強制されるため、管理者権限は使用できず、各種ソフトも一部を除きインストールできません。
目標
- SSHないしそれに類する方法で自宅サーバーに接続する
- ターミナルにアクセスする
- 可能であればsudo権限も取得したい
- GUIでコーディングしたい
- 一定程度のセキュリティを確保したい
技術選定
直接SSHするのはセキュリティが怪しいので却下。サーバー機のパスワードをかなり適当に設定しているため、仮に認証を突破されると割と大きめのセキュリティリスクになります(殴
ということでTailscale + Powershell + SSHでやる方針で考えていたのですが、なんとここで共用PCにTailscaleを入れられないことが判明。痛いですねこれは痛い
ということでChatGPTに聞いたところ、Code-Server鯖を作ってHTTPSで接続する方法を提案されました。またなるべくこれ以上自宅でポート開放をやりたくないことから、Cloudflare Tunnels経由で接続するのがよさそうということになりました。
アクセス制御についてもCloudflare Accessを利用し認証することに決定。これならよほどのことがなければ突破されることはないでしょう。
Code-Serverの利点としては、VScodeをインストールせずともいつものGUIでファイルを操作できることと、ターミナルが付いているのでSSHの代替として利用できることが挙げられます。これはこれでセキュリティ的に危ないのですが、認証手段にGoogleあたりを噛ませて2FAを使えば大丈夫だと思います。
ほか、Code-Serverなら各種処理がサーバーサイドで行われるので、こっちの微妙な性能のPCを使わずにVScodeが使えるのもかなり大きな利点だと思います。
作業の流れ
1. Code-Serverを自宅鯖にインスコする
今回の主役。
インストール方法は公式ドキュメントを参照してください。
2. Code-Serverをsystemdで自動起動、ローカルで動かす
やり方は省略。
Cloudflare Tunnelsを使って公開するので、Code-Serverは直接インターネットに公開せずローカルでのみ動かします。
Code-Serverにはかなり強めのパスワードが設定されています。
3. Cloudflaredをインスコ
主役その2であるCloudflare系サービスを利用するためのツールです。
使い方は公式ドキュメントを参照してください。
4. ドメインをCloudflareに登録
こちらのページを参考に、DDNS Nowで取得したドメインをCloudflareに登録しました。
4. Cloudflare Tunnelを作成
今回の主役その2。
具体的なやり方は上記記事を参照してください。
5. Cloudflare Accessを設定
Cloudflare Zero Trustの画面から認証周りの設定をします。
今回はCloudflareのアカウントでログインする設定にし、アカウントのメールアドレスが自GmailだったらOKという形にしました。Cloudflareアカウントには2FAを設定してあります。
Cloudflare Accessの認証 + Code-Serverの認証で二重にアクセス制御ができているので、かなり堅牢だと思います。
成果
ブラウザさえあればこの画面まで行けるので、今後はどんな環境でも自宅鯖に接続できます。
流石にブラウザすらまともに動かないような環境はきょうび存在しないと信じています。
※2026-08-07追記
実際に運用してみたところ、インターネット接続が不安定すぎて苦労することになりました。
たかだか2つのリポジトリを作成しgit pushするのに計30分ぐらい掛かったのは初めてです。
どうでもいい話
今回お世話になったCloudflareですが、実はdoom-wasmなるリポジトリを公開しています。なんでだよ
要するにWebAssembly版Doomなのですが、どうやらもともとUDPで動いていたマルチプレイ周りの処理を、Cloudflare Workersを利用したWebsocket通信に変更しているとのこと。つまり単なるDoomチャレンジではなく、Cloudflare Workersでもリアルタイムアプリケーションが使えることを示すための技術試験ということらしいです。すごい!
まとめ
Cloudflareはすごい
おわり
コメント
コメントを投稿