この記事は、ConoHa Advent Calendar 2024 14日目の記事です。
今回は清楚かわいい ConoHa ちゃんにブラウザから SSH 接続できる環境を作成しています。
コピー・ペーストがしたいです
ブラウザからの SSH 接続は ConoHa ちゃんであればコントロールパネルのコンソールからできます。
ただこの機能「コピー・ペーストが利用できません」
「テキスト送信」でまとめてコマンドを送ることができますが、わたしはコピー・ペーストがしたいです
ということで Cloudflare の Zero Trust が Browser SSH を提供しているようなので、作成していきます。
仕組み
Self-hosted applications ・ Cloudflare Zero Trust doc
VPS にエージェントをインストールして ConoHa ちゃんに Cloudflare のネットワークに参加してもらいます。
Cloudflare 上に SSH クライアントアプリを展開して、あとはブラウザからアクセス。終わり
ネットワークは Cloudflare がいい感じにしてくれます。ポート開放もいりません
アプリには認証があり、あらかじめ設定した認証方式(GitHub や Google など)で制限します
(今回はめんどくさいので初期設定であるメールアドレスのワンタイムパス認証です)
実際の動きはつないでみるを見てください。
目次
- VPS をつくる
- Tunnel をつくる
- Application をつくる
- つないでみる
前提条件
- Cloudflare アカウントを持っていること
- クレジットカードを持っていること
- 無料です
- が、Zero Trust 使用開始時にカード番号入力が必要です(不正利用対策?)
VPS をつくる
生贄となる ConoHa ちゃんを作成します。
この後のセットアップ作業で SSH を使うので SSH のセキュリティグループ設定は必要です。
Tunnel をつくる
Cloudflare <-> VPS 部分となる Tunnel を作成します。
Cloudflare のダッシュボードから「Zero Trust」を開いて
「Tunnels」から新しい Tunnel を作成していきます。
タイプで「Cloudflared」を選んで
名前をつけます。
インストール先の OS やアーキテクチャを選択。
すると、下側にエージェントインストールコマンドが生成されるので、左側のほうをコピペ
(右側は更新のとき用)
作っておいた ConoHa ちゃんに SSH 接続してコマンドを丸っと貼り付け実行します。
cloudflared installed successfully
になればOKです。SSH は不要なのでセキュリティグループは塞いでOKです
(スタートアップスクリプトに仕込めば SSH も不要かも)
# sudo cloudflared service install xxx
2024-12-01T00:00:00Z INF Using Systemd
2024-12-01T00:00:00Z INF Linux service for cloudflared installed successfully
設定がOKだったら、ページ下のConnectors
に追加したサーバが表示されます。
ブラウザからアクセスする際の FQDN を決めます。
Path
指定もできますが Browser SSH は非対応です。空欄で。
その下の Service は VPS の接続先となる SSH を指定します。
この設定で Cloudflare から来た通信が SSH のポートに転送されます。
-
Type
:SSH
-
URL
:localhost:22
Application をつくる
ブラウザ <-> Cloudflare 部分となる Application を作成します。
「Applications」から新しい Application を作成していきます。
「Self-hosted」を選んで
Application name
に名前を入れます。
この値は FQDN にアクセスすると誰でも確認できるの注意です。
(そういえば「NG ワード:おっさん」は消えたんですか?)
その下のApplication Domain
には Tunnel で指定した FQDN と同じ値を入れます。
接続を許可する条件を指定します。
Policy name
に名前を入れます。
いろいろ設定項目はありますが、Configure rules
だけ設定すればOKです。
条件として特定メールアドレスやアクセス元 IP と選択肢は盛りだくさん。
今回は特定メールアドレスを指定します。
このメールアドレス条件がアプリのログインとマッチして、一致した場合だけ SSH できます
追加設定を設定します。
今回は「Additional settings」の「Browser rendering」からSSH
を選ぶ点だけ変更
これで SSH クライアントがブラウザで動きます。
つないでみる
ブラウザから指定した FQDN にアクセスします。
許可条件で指定したメールアドレスを入れて「Send me a Code」
noreply@notify.cloudflare.com
から届いたワンタイムパス(数字)を入れて「Sign in」
ここからは SSH 接続の時間です。
VPS のユーザー名(root
)を入れ
ssh ユーザーのパスワードを入れます。
「Private Key」を選べば鍵認証も可
見慣れた黒い画面が降臨
SSH サーバーから見ると VPS で動いているエージェントからのアクセス扱い
アクセス元は常に127.0.0.1
です
あとがき
ConoHa ちゃんの Advent Calendar は2019年から毎年参加してきましたが、去年は参加できていません
某パブリックで従量課金なクラウドサービスに浮気した結果、ミスって 100万円の請求書襲来だったからです
今年はそんなこともなく、やすらぎの年末年始を迎えられそうです。たぶん