SSH操作が爆速に!GUIで快適に管理できるネイティブグラフィカルシェル
A native graphical shell for SSH
A native graphical shell for SSH
SSHを快適に使うためのネイティブグラフィカルシェルが注目を集めています。CLIベースの操作に限界を感じている方や、サーバー管理をより視覚的かつ直感的に行いたいエンジニアにとって、非常に強力なツールとなるでしょう。
outer shellがどう動いているのか理解しようとしているんだけど、Webサイトに挙げられている動機についてちょっと質問させて。
JupyterやTensorboardのようなアプリは、リモートサーバー上で動いている場合、通常は標準のWebブラウザからは見えない。インターネット全体をこのアプリに触れさせるのは非常に危険だからだ。その代わり、サーバー上のローカルポートで動作し、自分のコンピュータから直接アクセスすることはできない。
従来、これらにアクセスするには新しいターミナルを開いて次のように実行する必要があった。
ssh -L 24601:localhost:8889 mrcslws@lambda4.mycompany.com &
ssh -L 24602:localhost:6006 mrcslws@lambda4.mycompany.com &
これって本当?プロトタイピングならSSHフォワーディングでいいけど、デプロイ時にはmyjupyternotebook.comみたいなWebサイトを立てて、認証を設定して他の人がアクセスできないようにするのが普通じゃないかな。HTTPの基本認証ならそんなに手間じゃないし。
もしHTTPじゃなくてSSHを公開したいなら、VPNやトンネル経由にするという選択肢もあるよね。
結局何が言いたいかというと、outer loopはすごくクールなんだけど、何が目的なのかよく分からないんだ。自分が何か見落としているんだと思うんだけど、開発に至った理由を教えてくれないかな?
面白いアイデアだね。CLIにANSIエスケープコードを組み込んだら、面白いことになるかも。普通のターミナルアプリがUIの一部をWebでレンダリングして、UNIXソケットで通信するなんて想像してみて。派手なUIでありつつも、すべてキーボードやマウスで操作できる。古いターミナルに対してはテキストUIにフォールバックするような感じで。
グラフィカルなアプリのフロントエンドとバックエンドを分離するというアイデアは好きだけど、斬新というほどでもない気がする。何か見落としてるかな。
「X11Forwarding yes」や「HTML5 Webアプリ」の存在を知らないわけじゃないよね?
ブラウザにとって、Unixソケット接続のような機能は極めてニッチなものとして退けられてきた
これはセキュリティ上の懸念があるから実装されていないんだよ。少なくとも生のUnixソケットについてはね。WebSocketsやHTTP限定のポートなら利用できるけど。
素晴らしい記事!自分の調査用にブックマークさせてもらうよ。
私のターミナルの「clickity clackity」機能[0]はローカルマシン限定だから、リモート先に接続した瞬間にグラフィカルな要素が失われてしまうんだ。
オフラインリプレイ[1]の登場でそのあたりも少し変わりつつあって、ネイティブGUIとTUIが連携して巻き戻し機能などが使えるようになり始めている。先は長そうだけど、こうやって正しく実験している人たちを見るのは大好きだ。(ターミナル分野はまだまだ可能性に満ちているよね。)
[0] https://terminal.click
[1] https://terminal.click/posts/2026/06/tui-stability/#:~:text=Offline%20Replay
これまでも多くあったように、「解決策はあるが、解決すべき問題が見当たらない」ようなものに見えるな……。以下の引用がこの取り組みに当てはまる気がする。
「Unixを理解していない者は、Unixを再発明する運命にある。それも、ひどいやり方で。」 ~Henry Spencer
やめておいたほうがいい。ブラウザに汎用的なソケット権限が許可されていないのには、長年のセキュリティや「Webコントロールプレーンの分離」に関する非常に優れた理由がたくさんあるからだ。
機械的な類推で言うと、3輪のATVがなぜ悪いアイデアなのかという話に似ているよ。
著者はどうやらCockpitのことを知らないらしい。
彼らが「欠けている」とか「斬新だ」と言っていることはすべて、10年以上前からCockpitの一部として存在している。ソケットベースのWebサーバー接続から、サーバーアプリのバックエンドとフロントエンドの分離、そしてシェルアクセス機能を持つサーバーコンソールというコンセプト全体に至るまでね。
彼らの「これがまだ存在していないなんて変じゃない?」という疑問に答えるなら、答えはノーだ。ずっと前から存在しているからね。
これは、何年も前(確か2013年頃だったかな)に私がPoCを作ったアイデアを思い出させるよ。ずっと役に立つ芽があると思っていたものだ。サーバーにSSH接続して、向こう側のプロセスがデータを出力し、それがローカルポートから配信されるWebアプリに表示される。ローカルのバックエンドがそのデータを受け取る仕組みさ。例えば、短時間だけ動くWebベースの「top」コマンドみたいなもの。社内のハッカソンで作ったときはすごくクールだと思ったけど、他の人は誰も感心してくれなかったんだ。かなり未完成なアイデアだったけど、これはその完全版みたいに見えるな。チェックしてみるよ。
デバイスとのインターフェースを第一原理から考えるというアプローチは滅多にないし、考えさせられる実装だね。お見事。
最高だね!
私も少し前にいくつか実験をしたことがある。これに足りないと思うのは、あらかじめ用意されたアプリだけでなく、任意のコマンドを実行する機能だね。実際、これの上に本物の「シェル」を構築すると、本当に面白くなると思うよ。
ここで言うのは古典的なPOSIXシェルではなく、カスタムUIとフロントエンドのフルパワーを引き出せるようなもの。あと、「ネスト可能な接続」も必須だね。
私が実験していたのはWebインターフェースと、Goで静的にコンパイルしたバックエンド(SSH経由で簡単にデプロイするため)の組み合わせだった。いつか完成させたいな(笑)