VSCode リモート開発とは
VSCodeのリモート開発機能は、ローカルマシンのVSCodeからリモートサーバー、WSL環境、またはトンネル経由で接続したマシン上で直接開発できる機能です。ソースコードをローカルに置く必要がなく、リモート環境のリソースとツールをフル活用できます。
VSCodeは接続先に「VS Code Server」と呼ばれる軽量なサーバーコンポーネントを自動インストールし、ローカルのUIとリモートの実行環境をシームレスに連携させます。IntelliSense、コード補完、デバッグなどの機能はすべてリモート側で実行されるため、ローカル環境と同等の開発体験を得られます。
本記事では、VSCodeのリモート開発機能であるRemote - SSH、Remote - WSL、Remote Tunnelsの3つの方式について、導入から実践的な活用方法まで詳しく解説します。
3つのリモート開発方式の比較
VSCodeのリモート開発には、用途に応じた3つの方式があります。それぞれの特徴を把握して最適な方式を選択してください。
| 方式 | 接続先 | 主な用途 | 必要なもの |
|---|---|---|---|
| Remote - SSH | SSH対応サーバー | クラウドVM、物理サーバー | SSHクライアント、SSHサーバー |
| Remote - WSL | WSL環境 | Windows上でのLinux開発 | WSL 1/2、Windowsマシン |
| Remote Tunnels | 任意のマシン | ファイアウォール越えの接続 | GitHubアカウント |
方式選択のフローチャート
flowchart TD
A[リモート開発を始めたい] --> B{接続先の環境は?}
B -->|クラウドVM/物理サーバー| C{SSH接続可能?}
B -->|同一マシンのWSL| D[Remote - WSL]
B -->|ファイアウォール内のマシン| E{SSH設定が困難?}
C -->|はい| F[Remote - SSH]
C -->|いいえ| G[Remote Tunnels]
E -->|はい| G
E -->|いいえ| FRemote - SSH:SSHでリモートサーバーに接続
Remote - SSHは、SSH経由でリモートマシンに接続し、そのマシン上でVSCodeの開発環境を構築する方式です。クラウドVMや社内サーバーへの接続に最適です。
システム要件
Remote - SSHを使用するには、ローカルマシンとリモートホストの両方で要件を満たす必要があります。
ローカルマシン(クライアント側)
| OS | 要件 |
|---|---|
| Windows | OpenSSH互換クライアント(Windows 10以降は標準搭載) |
| macOS | OpenSSHクライアント(標準搭載) |
| Linux | OpenSSHクライアント |
リモートホスト(サーバー側)
| アーキテクチャ | 対応OS |
|---|---|
| x86_64 | Debian 8以上、Ubuntu 16.04以上、CentOS/RHEL 7以上 |
| ARMv7l (AArch32) | Raspberry Pi OS Stretch/9以上(32ビット) |
| ARMv8l (AArch64) | Ubuntu 18.04以上(64ビット) |
| Windows | Windows 10 / Server 2016/2019(1803以上) |
| macOS | macOS 10.14以上(リモートログイン有効化が必要) |
リモートホストには最低1GB RAM(推奨2GB以上、2コアCPU)が必要です。
インストール手順
Remote - SSHのセットアップは以下の手順で行います。
- SSHクライアントをインストールします(Windows 10以降は標準搭載)
- VSCodeをインストールします
- Remote - SSH拡張機能をインストールします
コマンドパレット(Ctrl+Shift+P)から以下のコマンドでもインストールできます。
|
|
Remote Development拡張機能パックをインストールすると、SSH、WSL、Dev Containersの3つの拡張機能をまとめて導入できます。
|
|
SSHホストへの接続
基本的な接続方法
- ターミナルからSSH接続できることを確認します
|
|
-
VSCodeでコマンドパレット(
F1またはCtrl+Shift+P)を開きます -
Remote-SSH: Connect to Host...を選択します -
user@hostname形式でホスト情報を入力します -
リモートOSの種類を選択します(Linux、Windows、macOS)
-
接続が完了すると、ステータスバーの左下にリモート接続アイコンが表示されます
SSH設定ファイルでホストを管理
頻繁に接続するホストは、SSH設定ファイルに登録しておくと便利です。
コマンドパレットからRemote-SSH: Add New SSH Host...を選択し、接続情報を入力します。以下のような形式で~/.ssh/configファイルに設定が保存されます。
Host myserver
HostName 192.168.1.100
User developer
Port 22
IdentityFile ~/.ssh/id_ed25519
Host aws-dev
HostName ec2-xx-xx-xx-xx.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ssh/aws-key.pem
Host jumphost-target
HostName 10.0.0.50
User admin
ProxyJump jumphost
SSH鍵認証の設定
パスワード認証よりもSSH鍵認証を推奨します。以下の手順で設定します。
- ローカルマシンで鍵ペアを生成します
|
|
- 公開鍵をリモートホストにコピーします
|
|
- SSH Agentを起動し、秘密鍵を登録します
|
|
ポートフォワーディング
リモートマシンで実行中のWebアプリケーションにローカルからアクセスするには、ポートフォワーディングを使用します。
一時的なポート転送
- コマンドパレットから
Forward a Portを選択します - 転送したいポート番号を入力します
- ローカルの
localhost:ポート番号でリモートのサービスにアクセスできます
SSH設定ファイルでの永続的な設定
Host myserver
HostName 192.168.1.100
User developer
LocalForward 127.0.0.1:3000 127.0.0.1:3000
LocalForward 127.0.0.1:5432 127.0.0.1:5432
Remote - SSHの設定オプション
VSCodeの設定(settings.json)で、Remote - SSHの動作をカスタマイズできます。
|
|
Remote - WSL:Windows上でLinux開発
Remote - WSLは、Windows Subsystem for Linux(WSL)をフル機能の開発環境として活用するための拡張機能です。Windows上でLinuxネイティブのツールチェーンを使用した開発が可能になります。
システム要件
| コンポーネント | 要件 |
|---|---|
| OS | Windows 10 バージョン1903以降、Windows 11 |
| WSL | WSL 1またはWSL 2(WSL 2推奨) |
| ディストリビューション | Ubuntu、Debian、openSUSE、Kali、Alpine等 |
WSL 2はWSL 1と比較して、ファイルシステムのパフォーマンスが向上し、完全なLinuxカーネルを使用できます。
インストール手順
- WSLと任意のLinuxディストリビューションをインストールします
|
|
-
VSCodeをWindowsにインストールします(WSL内ではなくWindows側にインストール)
-
WSL拡張機能をインストールします
|
|
WSL環境への接続
WSLターミナルからの起動
最も簡単な方法は、WSLターミナルからcodeコマンドを実行することです。
|
|
初回実行時はVS Code Serverのダウンロードとセットアップが行われます。
VSCodeからの接続
- VSCodeを起動します
- コマンドパレットで
WSL: Connect to WSLを選択します - 複数のディストリビューションがある場合は
WSL: Connect to WSL using Distro...で選択します
コマンドラインオプション
Windowsのコマンドプロンプトから直接WSL環境を開くこともできます。
|
|
WSLでのGit設定
WSLとWindowsの両方でGitを使用する場合、改行コードの設定に注意が必要です。
|
|
WindowsのGit認証情報をWSLで共有するには、以下の設定を行います。
|
|
WSL固有の設定
WSL接続時のみ適用される設定は、リモート設定として保存できます。
コマンドパレットでPreferences: Open Remote Settingsを選択し、WSL用の設定を追加します。
|
|
WSL 2でDev Containersを使用
WSL 2環境では、Dev Containersと組み合わせてコンテナ内で開発することも可能です。
- Docker DesktopでWSL 2バックエンドを有効にします
- Settings → Resources → WSL Integrationで対象のディストリビューションを有効にします
- WSL環境でフォルダを開きます
- コマンドパレットから
Dev Containers: Reopen in Containerを選択します
Remote Tunnels:どこからでも安全に接続
Remote Tunnelsは、SSHの設定なしにリモートマシンに安全にアクセスできる機能です。GitHubアカウントによる認証を使用し、Microsoft dev tunnelsサービスを経由して接続します。
Remote Tunnelsの特徴
- SSHサーバーの設定が不要
- ファイアウォールやNATを越えた接続が可能
- GitHubまたはMicrosoftアカウントで認証
- vscode.devからブラウザでもアクセス可能
セキュリティ
Remote Tunnelsは以下のセキュリティ機能を備えています。
- 接続の両端で同一のGitHub/Microsoftアカウントによる認証が必要
- トンネル上でSSH接続を確立し、AES 256(CTRモード)で暗号化
- ファイアウォール変更やネットワークリスナーの設定は不要
トンネルの作成方法
Remote Tunnelsを使用するには、リモートマシンでトンネルを作成する必要があります。2つの方法があります。
方法1:code CLIを使用
リモートマシンでcode CLIを使用してトンネルを作成します。
|
|
VSCodeがインストールされていない環境では、スタンドアロンのCLIをダウンロードして使用できます。
|
|
方法2:VSCode UIから有効化
- リモートマシンでVSCodeを開きます
- アカウントメニューから
Turn on Remote Tunnel Accessを選択します - GitHubアカウントでログインします
- トンネルが有効化されると、vscode.devのURLが表示されます
クライアントからの接続
VS Code Desktopから接続
- Remote - Tunnels拡張機能をインストールします
|
|
- コマンドパレットで
Remote Tunnels: Connect to Tunnelを選択します - 接続可能なマシンの一覧から選択します
ブラウザ(vscode.dev)から接続
- トンネル作成時に表示されたURLにアクセスします(例:
https://vscode.dev/tunnel/<machine_name>) - GitHubアカウントで認証します
- ブラウザ上でVSCodeが起動し、リモートマシンに接続されます
トンネルの管理
|
|
Remote Explorerビューでも、登録済みのマシンの確認や削除が可能です。
使用制限
Remote Tunnelsには以下の制限があります。
- アカウントあたり最大10個のトンネルを登録可能
- 同時接続は1ユーザー/1クライアントのみ
- 帯域幅に制限あり(通常の開発作業では問題なし)
拡張機能の管理
リモート開発環境では、拡張機能はローカルとリモートのどちらかで実行されます。
拡張機能の実行場所
| 種類 | 実行場所 | 例 |
|---|---|---|
| UIに影響する拡張機能 | ローカル | テーマ、スニペット、キーバインド |
| ワークスペースに影響する拡張機能 | リモート | 言語サポート、リンター、デバッガー |
拡張機能をインストールすると、自動的に適切な場所にインストールされます。Extensions viewでは、Local - InstalledとSSH: hostname(またはWSL、Tunnels)のカテゴリに分けて表示されます。
常にインストールする拡張機能
特定の拡張機能を常にリモート環境にインストールするには、設定ファイルで指定します。
|
|
拡張機能の実行場所を強制
拡張機能の実行場所を明示的に指定することもできます。
|
|
uiを指定するとローカルで、workspaceを指定するとリモートで実行されます。
トラブルシューティング
Remote - SSHの問題
接続がタイムアウトする
- ターミナルから直接SSH接続できるか確認します
|
|
- SSH設定ファイルの構文エラーをチェックします
|
|
- リモートホストのリソース(RAM、ディスク容量)を確認します
権限エラー(bad permissions)
SSH鍵ファイルのパーミッションを修正します。
|
|
|
|
VS Code Serverのインストールに失敗
リモートホストで以下の要件を確認します。
bash、tar、curlまたはwgetがインストールされている- インターネット接続がある(
update.code.visualstudio.comへのアクセス) - 十分なディスク容量がある
Remote - WSLの問題
codeコマンドが見つからない
VSCodeのインストール時に「Add to PATH」オプションを有効にしていない場合、手動でパスを設定します。
|
|
ファイル監視の問題(WSL 1)
WSL 1でファイル名の変更時にエラーが発生する場合、ポーリングベースの監視に切り替えます。
|
|
この問題はWSL 2では発生しません。WSL 2への移行を検討してください。
|
|
Remote Tunnelsの問題
トンネルに接続できない
- リモートマシンでトンネルが実行中か確認します
- 同一のGitHubアカウントでログインしているか確認します
- ネットワークで
*.tunnels.api.visualstudio.comへのアクセスが許可されているか確認します
トンネルが切断される
サービスとして登録することで、トンネルを永続化できます。
|
|
共通の問題
拡張機能が動作しない
- 拡張機能がリモート開発に対応しているか確認します
- 必要なランタイム(Node.js、Python等)がリモート環境にインストールされているか確認します
- 拡張機能のログを確認します(Output → 拡張機能名)
パフォーマンスが遅い
- ネットワーク帯域幅を確認します
- リモートホストのリソース使用状況を確認します
- 大きなワークスペースの場合、
files.watcherExcludeで監視対象を制限します
|
|
リモート開発のベストプラクティス
セキュリティ
- SSH鍵認証を使用し、パスワード認証は避ける
- パスフレーズ付きのSSH鍵を使用する場合はSSH Agentを活用
- 複数ユーザーが接続するサーバーでは
remote.SSH.remoteServerListenOnSocketを有効化 - Remote Tunnelsでは組織のポリシーに従ってアクセス制御を設定
パフォーマンス
- WSLを使用する場合はWSL 2を選択
- 大規模プロジェクトでは
files.watcherExcludeを適切に設定 - Windowsファイルシステム(
/mnt/c/)よりもWSLファイルシステム(/home/)を使用
開発ワークフロー
- プロジェクトごとにリモート設定を
.vscode/settings.jsonで管理 - 必要な拡張機能を
remote.SSH.defaultExtensionsで統一 - チーム共有する設定はリポジトリにコミット
まとめ
VSCodeのリモート開発機能を使用することで、ローカル環境と同等の開発体験をリモート環境で実現できます。
- Remote - SSH:クラウドVMや物理サーバーへのSSH接続に最適
- Remote - WSL:Windows上でのLinuxネイティブ開発に最適
- Remote Tunnels:ファイアウォール越えやSSH設定が困難な環境に最適
それぞれの方式の特性を理解し、プロジェクトや環境に合わせて使い分けることで、効率的なリモート開発環境を構築できます。