本文へ
ハクソク

世界を動かす技術を、日本語で。

VSCodeのSSHエージェントはバナナです (2025)

元記事: 原文(fly.io)

概要

  • VSCode のリモート編集機能と LLM連携 への興味
  • LLMの hallucination問題 とエージェント型開発の有効性
  • 開発環境への セキュリティ懸念 の指摘
  • Emacsの Tramp とVSCodeの比較
  • Fly Machine との接続実現と学びの共有

VSCodeリモート編集とLLMエージェント連携の可能性

  • VSCode のSSH経由リモート編集フローへの統合ニーズ
  • LLM(大規模言語モデル) を利用したVSCodeフォークの普及
  • LLMによるコード生成時の誤りを hallucination と呼称
  • 人間による誤りは engineering と呼ばれる現状
  • コード生成の有用性は 利用者の知識 次第
  • LLMと実行環境 を連携させることで更なる有用性獲得
  • エージェント型セットアップによる 自動ループ 構築
    • LLMがコード生成
    • エージェントが実行・エラー取得
    • エラーをLLMへフィードバック
    • プロセスの反復
  • このループは hallucination問題 の半分程度の解決策
  • だが、 ローカル開発環境 での実行はリスク
  • LLMは システム設定 にも影響を及ぼす可能性
  • 理想は クリーンなLinuxインスタンス 上での安全な反復実行

Emacs TrampとVSCodeリモート機能の比較と懸念

  • Emacs のリモート編集システム Tramp の紹介
    • ElispによるSSH等のインタラクティブ環境との連携
    • シェルコマンド実行による拡張性
  • VSCode にも類似機能の存在
  • Trampのシンプルさと比較し、VSCodeは 大規模なエージェント をリモートに導入
    • BashスニペットでエージェントやNodeバイナリをダウンロード
    • エージェントは SSHポートフォワード 経由で動作
    • WebSocketsでVSCodeフロントエンドと通信
  • このプロトコルの機能
    • ファイルシステム探索
    • 任意ファイル編集
    • 独自のシェルPTYプロセス起動
    • 永続化機能
  • セキュリティの世界では、こうしたツールに 特定の呼び名 が存在
  • 開発サーバー でのVSCodeリモート編集は要注意
  • 本番環境 での利用は特に危険視

Fly Machine連携と学びの共有

  • Fly Machine とのカスタム接続には上記の懸念は直接関係なし
  • 独自の接続方式により深刻な問題は回避
  • 本記事執筆の動機は 学びの共有
  • 今後もブログ形式で 知見発信 継続方針

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

エージェントにSSHアクセスを与えるときは、何をしているのかをしっかり見て理解したいんだ。基本的には、自分が打てるコマンドだけをCLIに「入力」してほしい。そうすれば、何をしているのか分かるし、結果に驚くこともない。オープンコードと賢いLLM(qwen 3.8-flash-next、deepseek v4 0731とか、もっと賢いやつ)なら、私の経験では結構うまくいくよ。

└

もしみんなが君みたいだったら、AIの安全性はそんなに大きな懸念にはならないだろうね。デフォルトの人間の行動は「火をつけて忘れる」って感じだから、すぐにおかしくなることがあるんだ。

(2025年)FYI、VSCodeのSSHエージェントはリモート開発にとって神のような存在だよ。「Fly」が挙げている「欠点」は、その利点の一部なんだ。いくつかのチームでこの拡張機能を大いに活用してきたけど、問題になったことは一度もない。SSHアクセスは自由に制限できるから、必要なセキュリティやアクセスのガードレールを確保できるよ。

└

「リモートシステム上のファイルを編集するためのツールは、リモートシステム上のファイルを編集できる。」

└

うん、これはリモートツールを使ったリモート編集にとって正しいアーキテクチャだよ。すごくうまく機能する。(SSH接続が切れたときの再接続に関する長年のバグはあるけど、それはアーキテクチャのせいじゃない。)

└

記事で述べられている不安定さについては、何も変わってないよ。問題は、リモートホストがプロトコルを通じてローカルホストを制御できることだ。

└

Linuxユーザーとして、VSCodeのSSHが嫌いだった。管理が難しくなるイライラする点がたくさんあるんだよね。例えば、MotDを表示しないから、ユーザーに重要なメッセージを伝えられない。セッションも再利用しない(デフォルトではね。ちなみに、sshもそうだけど)。ユーザーから数ヶ月にわたって開いたセッションが何十も残ってることもあった。人を強制的にログアウトさせるスクリプトを書かなきゃいけなかったよ… プラグインが単なるラッパーで、ユーザーがsshを知っていることが前提ならまだしも、プラグインはその全てを抽象化して「リモートマシンでVSCodeを使う」ツールになってる。だから、認証情報を扱うだけじゃダメで、そうしないと人々はただのsshだと思ってしまう。

└

VSCodeの理念は軽量で、Notepad++にターミナルが付いたようなものであるべきだった。開発者たちが本筋を見失ってるよ。機能が豊富なSSHエージェントが欲しいならVisual Studioを勧めてほしい。開発者のトレンドがVSCodeを超強化して、拡張機能でピカピカに見えるけど、これは逆効果だよ。全体の目的を台無しにしてる。

└

それが出てから毎日使ってるよ。最初は、重いクライアントプロジェクトでDockerがMacを遅くするのに疲れたからなんだけど、今はファイル編集ができる簡単なSSHクライアントとして使ってる。vimやnanoはあんまり好きじゃないんだ。同じIDEに全てをまとめられるのは、俺にとっては大きい。

└

低スペックの512MB RAMのVPSサーバーでは使えないよ。誰かがファイル操作のためにノードランタイム全体をバンドルするのがいいアイデアだと思ったから。

└

私はVSCodium(VSCodeのクロム系バージョン)を使ってて、この拡張を入れてるよ: https://github.com/jeanp413/open-remote-ssh エディタ(とその拡張)、プロジェクト、エージェントハーネスをコンテナ内で動かして、その拡張を使ってエディタを手に入れてる。これは主に、悪意のある拡張や依存関係、ロゲエージェントから自分の資格情報やデータを守るためなんだけど、開発環境をどのマシンにもすぐに移行できるっていう利点もある(家ではLinux、仕事ではmacOSを使ってる)。podmanをインストールして、VSCodiumをインストールして、SSH拡張を追加して、イメージをビルドして、ユーティリティシェルスクリプトを追加すれば(コンテナ内に出入りするのを素早くするため)、完了。どうやらマイクロソフトは一部のVSCode APIを独占的にしてるから、自社の拡張しか使えないらしい(セキュリティ上の理由でらしいけど)。だから、この特定の拡張はVSCodiumでしか動かないんだよね。この記事が指摘してるような脆弱性に対しても脆弱なのかな。

VSCodeのアーキテクチャのこの部分は、私には受け入れられる。逆に、侵害されたリモートが私のローカルマシンに好き勝手できるのは、ちょっと無理だな。

Hacker Newsで議論の続きを見る

同じ出典の記事