はじめに
悲報!以前は ngrok 経由で Katacoda 環境に SSH アクセスできていましたが、ngrok を起動すると Katacoda 環境がリセット (Expired) されるようになりました。
代替手段の模索
Software Design 2022年4月号の「【最終回】はじめよう,おうちクラウド【6】おうちクラウドをインターネットに公開しよう」の記事に代替手段に関する参考情報が掲載されていました。
frp (fast reverse proxy)
awesome-tunnelingのリストの中で、frp (fast reverse proxy) を使用することで Katacoda 環境に SSH アクセスできることを確認しました。
構成
インターネット上で ngrok.com がパブリックIPアドレスを提供してくれました。
ngrok.com の代替として、パブリッククラウドのホスティング環境などで frps (サーバ機能) を動作させる必要があります。
Katacoda で frp を使う
図は frp のサイトから引用しています。
まず、最初にパブリッククラウドのホスティング環境などで frps コマンドを実行します。
次に Katacoda 環境で frpc コマンドを実行する必要がありますが、Katacoda 環境から外向きの通信で開いているポートは 80 (HTTP) と 443 (HTTPS) のみです。
パブリッククラウドのホスティング環境では、frps コマンドは 80 (HTTP) または 443 (HTTPS) ポートで待ち受ける必要があります。
Katacoda 環境で frpc コマンドを実行して frps と正常に接続されると、frpc.ini で指定したポート番号でトンネルが作成されます。
設定例
パブリッククラウドのホスティング環境 (frps.ini)
パブリッククラウドのホスティング環境は ポート: 443 で待ち受ける例です。
tokenの値(12345678)は容易に推察されない値に置き換えてください。
[common]
bind_port = 443
token = 12345678
Katacoda 環境 (frpc.ini)
SSH アクセス (パブリックIP (ポート: 10022) → Katacoda 環境 (ポート: 22)) と VNC アクセス (パブリックIP (ポート: 5901) → Katacoda 環境 (ポート: 5901)) を作成する例です。
[public IP]の部分はパブリッククラウドのホスティング環境のIPアドレスに置き換えてください。
tokenの値(12345678)は容易に推察されない値に置き換えてください。
[common]
server_addr = [public IP]
server_port = 443
token = 12345678
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5901
remote_port = 5901
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10022
結果
ターミナルから SSH 接続とVNC Clientで X Windowsを表示させることができました。