VSCodeのSSHエージェントは常軌を逸している
VSCode's SSH Agent Is Bananas

VSCodeのリモートSSH編集は、EmacsのTrampのようにリモート環境のシェルコマンドを利用するのではなく、Bashスニペットでエージェントをダウンロードし、Nodeバイナリをインストール。WebSocketでファイルシステムを徘徊、任意のファイルを編集、シェルPTYを起動、自身を永続化する。これはマルウェア的な動作だと著者は警告し、開発サーバーや本番環境での利用に懸念を示す。
セキュリティの世界では、こういう動きをするツールには名前がある。口に出して言わないけど、それはVSCodeに対して不公平だからね。ただ、その名前は本質的にネズミっぽいと言っておこう。
HNでの議論
125- danielklnstein
(2025)が抜けてる
参考までに、VSCodeのSSHエージェントはリモート開発にとってまさに救世主だよ。Flyが挙げている「欠点」は、実は利点の一部なんだ。拡張機能を多用しているチームで何度も働いてきたけど、問題になったことは一度もない。必要なセキュリティやアクセスガードレールを確保するために、SSHアクセスを任意に制限できる。
- 10000truths
つまり、リモートマシン上でファイルを編集し、任意のコマンドを実行するために特別に設計されたプログラムが……それを実行できるってことだね。どこがどうクレイジーなのかよくわからない。SSH/SFTP経由でバイナリを送るのは一見奇妙に思えるかもしれないが、VSCodeはリモートマシンが広範なインターネットにアクセスできると仮定できないし、リモートでエージェントを確実にブートストラップする方法が必要なんだ。SSHトンネル経由で送るのが自然な解決策だよ。
- binlog
エージェントはリモートの開発ボックスで実行されることを想定している。目的は、リモートマシンをローカルマシンの拡張として、拡張機能の実行、コンテナ、パッケージのインストール、デプロイのテスト、ポート転送などなど、あらゆることを行えるようにすることだ。トンネリングは機能の一部だ。本番サーバーにインストールしてその挙動に驚いているなら、それは自己責任だよ。
- zx8080
> 「幻覚」とはLLMがコードを間違えることを指し、「エンジニアリング」とは人間が間違えることを指す。
記事の冒頭で早くもついていけなくなった。これは実際のソフトウェアエンジニアリングに対する純粋な憎悪と無知のように聞こえる。
- MajesticHobo2
VSCodeのアーキテクチャのこの部分は私には許容できる。逆方向、つまり侵害されたリモートが私のローカルマシンで好き放題できるというのは許容できない。
- xg15
> エージェントはポート転送されたSSH上で動作する。実行中のVSCodeフロントエンドへのWebSockets接続を確立する。その接続上の基盤プロトコルは以下を実行できる:
ファイルシステムを徘徊する
任意のファイルを編集する
独自のシェルPTYプロセスを起動する
自身を永続化する
待って、ここでどのマシンのことを指しているのか誰か説明してくれない?
つまり、著者のセットアップでは、彼は開発用ラップトップでVSCode(つまりフロントエンド)を実行していて、それをLLMの直接アクセスから守りたいと考えている。
VSCodeはssh経由で専用の「サンドボックス」マシンに接続し、そこでLLMが(ほぼ)好き放題できる。
VSCodeはこれをMicrosoft流に実現する。つまり、ssh接続を使ってサンドボックスマシンにVSCode Server(「バックエンド」)をインストールし、websocket接続を介して通信する。
では、何が起こるのか?もしwebsocket接続がフロントエンドにサンドボックスマシン上で任意のコマンドを実行させるなら、それは特に驚くことではない。フロントエンドにはすでにssh接続と、同じことができる巨大なサーバープロセスがあり、サンドボックスマシンの目的全体は、害を及ぼすことなく任意の信頼できないコマンドを実行することだ。
しかし記事は、websocket接続が「実行中のVSCodeフロントエンドに戻る」と言っている。つまり、逆になっているのか?つまり、エージェント/ハーネスはサンドボックスマシン上のサーバーで実行されるが、何らかの理由でこのwebsocket接続も持っていて、開発用ラップトップ上で任意のコマンドを実行できるのか?
そういうこと?それなら本当に狂っている!
- low_tech_punk
VSCodeサーバーは全般的に好きだが、メモリを食いすぎる。Raspberry Pi(1GB)ではRAMを使い果たしてクラッシュするだろう。
- Rapzid
バイブス系の連中のために翻訳してやろう。ここでの「エージェント」はLLMエージェントではなく、VSCodeフロントエンドをリモートバックエンドに接続するSSHエージェントだ。
記事が指摘している問題は、これによりリモートから開始されるローカルコード実行に対して脆弱になることだ。
公式SSH拡張機能のセキュリティ通知はこちら https://marketplace.visualstudio.com/items?itemName=ms-vscod...
> Remote-SSHを使用すると、ローカルマシンとリモート間の接続が開かれます。Remote-SSHは、信頼できる安全なリモートマシン、および信頼できる当事者が所有するリモートマシンにのみ接続するために使用してください。侵害されたリモートは、VS Code Remote接続を使用してローカルマシン上でコードを実行する可能性があります。
はい、この記事は2025年2月のものだが、この点に関しては何も変わっていない。おそらく今では、VSCodeのSSH経由のリモートホスト接続を使ってVMやその他のリモートSSH「サンドボックス」で開発するのが安全だと信じている人がずっと増えているだけだ。現実は、Microsoft自身が述べているように、リモートを信頼できないなら……それはあなたのローカルコンピュータを乗っ取ることができる。そしてそれは大した「サンドボックス」ではない。