はじめに
リモートサーバー上でVS Codeを使い、GitHub Copilot、Claude Code、OpenAI APIなどの最新AI支援ツールを快適に・安全に・高速に動作させるための完全ガイドです。
本記事は、GPT-5 proからの専門的なアドバイスを反映し、よくある誤った構成を避け、実運用で最適なセットアップを実現します。
この記事で実現できること
- 🚀 ローカルPCからリモートUbuntuへの高速・安全なSSH接続
- 🤖 3大AI拡張の統合利用(GitHub Copilot、Claude Code、Continue)
- 🔒 セキュアな認証・APIキー管理
- ⚡ NFS環境でも快適な動作(inotify最適化、VS Code Server配置の工夫)
- 🎯 ProxyJump による踏み台サーバー経由接続
想定読者
- リモートサーバー(Ubuntu)でVS Code開発をしたい方
- AI支援ツール(Copilot/Claude/OpenAI)を活用したい方
- HPC、研究室サーバー、社内開発サーバーなどでの開発者
- NFSやネットワークストレージ上での開発で困っている方
目次
アーキテクチャと設計方針
全体構成
ローカルPC (VS Code Desktop)
↓ SSH (Ed25519鍵認証、ProxyJump)
踏み台サーバー (bastion)
↓
リモートUbuntu (VS Code Server自動配置)
↓ HTTPS (443)
各種AI API (GitHub/Anthropic/OpenAI)
使用するAI拡張
拡張名 | 用途 | 備考 |
---|---|---|
GitHub Copilot | コード補完・チャット | 最も広く使われるAI支援ツール |
Claude Code | Anthropic製AI支援 | コード生成・リファクタリング |
Continue | OpenAI API統合 | Codex代替(※公式Codexは2023年廃止) |
✅ 正しいアプローチ(推奨構成)
本記事では、以下のベストプラクティスに基づいて構成します:
項目 | 推奨構成 | 理由 |
---|---|---|
接続方式 | Remote-SSH | code-serverやX11より安定・軽量 |
認証方式 | 鍵認証のみ | パスワード認証は脆弱性リスク |
踏み台経由接続 | ProxyJump | ProxyCommandより安全・シンプル |
VS Code Server配置 | NFS外のローカルディスク | NFSは遅く不安定 |
ファイル監視 | inotify制限の緩和 | 大規模リポジトリでの必須対策 |
Node.js | 事前インストール不要 | VS Code Serverに内蔵 |
VS Code本体 | サーバーにインストール不要 | 自動配置される |
❌ 避けるべき誤った構成
誤り | なぜダメか |
---|---|
サーバーにVS Code本体をaptインストール | 不要。Remote-SSHが自動配置する |
Node.jsを事前インストール | 通常不要。VS Code Server内蔵 |
PasswordAuthentication yes | セキュリティリスク。鍵のみに統一 |
ForwardAgent常時有効 | 鍵盗用リスク。最小限に |
「Codex」という名称 | 既に廃止。Continueで代替 |
code-server使用 | Copilot互換性問題、認証複雑化 |
本記事の独自性: 多くのガイドが推奨する「サーバーにVS CodeやNode.jsを入れる」手順は実は不要です。Remote-SSHの自動配置機能を正しく使えば、より簡潔で保守しやすい構成になります。
前提条件
ローカルPC
- OS: Windows/macOS/Linux
- VS Code Desktop: 最新版(ダウンロード)
- SSHクライアント: 標準搭載(macOS/Linux)またはOpenSSH(Windows 10+)
- インターネット接続: AI APIアクセス用
リモートサーバー
- OS: Ubuntu 22.04/24.04 LTS推奨(他のLinuxディストリビューションも可)
- SSH接続: 可能であること
- アウトバウンドHTTPS: 443ポートでの外向き通信が可能
- ディスク空き容量: 最低5GB(VS Code Server + 拡張用)
必要なアカウント・サブスクリプション
組織利用の場合: GitHub Copilot BusinessやClaude Enterpriseなど、コードが学習に使用されないプランの利用を推奨します。
セットアップ手順
Phase 1: SSH設定の最適化(ローカルPC)
1.1 SSH鍵の生成(未作成の場合)
Ed25519鍵は、RSA鍵より高速・安全・短いため推奨されます。
# Ed25519鍵を生成
ssh-keygen -t ed25519 -C "your_email@example.com"
# 保存場所: ~/.ssh/id_ed25519 (デフォルト)
# パスフレーズ: 任意(設定推奨)
既存のRSA鍵について: 既にRSA鍵がある場合はそのまま使えますが、新規作成ならEd25519を推奨します。
1.2 公開鍵をリモートサーバーに登録
方法1: ssh-copy-id
を使う(推奨)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-host
方法2: 手動でコピー
cat ~/.ssh/id_ed25519.pub | ssh user@remote-host \
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
1.3 ~/.ssh/config
を最適化
SSH設定ファイルで、接続を簡潔かつ安全に管理します。
# 共通設定
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
TCPKeepAlive yes
ForwardAgent no # デフォルトoff(セキュリティのため)
# メインゲートウェイ(踏み台サーバー)
Host bastion
HostName 192.168.1.100
User your_username
IdentityFile ~/.ssh/id_ed25519
# リモート開発サーバー(ProxyJump経由)
Host dev-server
HostName 10.0.0.50
User your_username
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519
設定確認:
# 設定が正しく読み込まれるか確認
ssh -G dev-server | grep -E "^(hostname|user|proxyjump)"
ProxyJumpとは: 踏み台サーバー経由で目的のサーバーに接続する仕組み。ProxyCommandより簡潔で、OpenSSH 7.3+で標準サポート。
1.4 接続テスト
# 踏み台サーバーへの接続確認
ssh bastion "echo 'Bastion connection: OK'"
# 最終目的地への接続確認(ProxyJump経由)
ssh dev-server "echo 'Dev server connection: OK' && hostname"
Phase 2: リモートサーバーの最適化
2.1 .bashrc
の設定(重要)
リモートサーバーの ~/.bashrc
に以下を追加します。
# ========================================
# VS Code Remote Development 最適化
# ========================================
# VS Code Serverの配置先をNFS外のローカルディスクに
# NFSは遅く、ファイルウォッチも不安定なため、/tmpなどローカルディスクを使用
# 注意: /tmp は再起動で消える環境が多いです。再配備が許容できない場合は
# /var/tmp や /scratch 等のローカル永続領域を指定してください
export VSCODE_AGENT_FOLDER=/tmp/$USER/.vscode-server
# Git最適化(並行操作時のロック問題を回避)
export GIT_OPTIONAL_LOCKS=0
# Node.js メモリ制限緩和(必要に応じて)
# export NODE_OPTIONS='--max-old-space-size=4096'
設定反映:
# ローカルPCから設定を追加(リモートで直接編集してもOK)
ssh dev-server "cat >> ~/.bashrc << 'EOF'
# VS Code Remote Development 最適化
export VSCODE_AGENT_FOLDER=/tmp/\$USER/.vscode-server
export GIT_OPTIONAL_LOCKS=0
EOF
"
# 確認
ssh dev-server "tail -5 ~/.bashrc"
NFSの問題点: ホームディレクトリがNFSマウントの場合、VS Code Serverをそこに配置すると以下の問題が発生します:
- ファイル監視(inotify)が不安定
- I/Oレイテンシが高い
- ロックファイルの競合
解決策:/tmp
(再起動で消える)や/var/tmp
・/scratch
などローカルディスクに配置
2.2 inotify制限の緩和(要管理者権限)
大規模リポジトリでは、Linuxのファイル監視数制限(inotify)に引っかかります。
現在の設定を確認:
ssh dev-server "cat /proc/sys/fs/inotify/max_user_watches"
# デフォルト: 8192〜248213(これでは不足)
緩和スクリプト(サーバー管理者に実行してもらう):
#!/bin/bash
# VS Code Remote Development - inotify制限の緩和
# 使い方: sudo bash setup-vscode-remote-inotify.sh
set -euo pipefail
echo "========================================="
echo "VS Code Remote - inotify最適化スクリプト"
echo "========================================="
# root権限チェック
if [[ $EUID -ne 0 ]]; then
echo "エラー: このスクリプトはroot権限で実行してください"
echo "使い方: sudo bash $0"
exit 1
fi
# 現在の設定確認
echo "[1/3] 現在のinotify設定:"
echo "max_user_watches: $(cat /proc/sys/fs/inotify/max_user_watches)"
echo "max_user_instances: $(cat /proc/sys/fs/inotify/max_user_instances)"
echo ""
# sysctl設定ファイル作成
echo "[2/3] sysctl設定ファイルを作成中..."
cat > /etc/sysctl.d/99-vscode-remote.conf << 'EOF'
# VS Code Remote Development用のinotify制限緩和
fs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=1024
fs.inotify.max_queued_events=16384
EOF
echo "設定ファイル作成: /etc/sysctl.d/99-vscode-remote.conf"
# 設定を即座に反映
echo "[3/3] 設定を反映中..."
sysctl --system | grep inotify
echo "========================================="
echo "✓ 設定完了!"
echo "========================================="
echo "新しいinotify設定:"
echo "max_user_watches: $(cat /proc/sys/fs/inotify/max_user_watches)"
echo "max_user_instances: $(cat /proc/sys/fs/inotify/max_user_instances)"
echo "この設定は再起動後も永続化されます。"
実行手順:
# スクリプトをリモートにコピー
scp setup-vscode-remote-inotify.sh dev-server:~/
# リモートで実行(管理者権限必要)
ssh dev-server
sudo bash ~/setup-vscode-remote-inotify.sh
exit
2.3 SSHDの強化(オプション、要管理者権限)
セキュリティを強化する場合、サーバー管理者に以下の設定を依頼します。
# 鍵認証のみ許可
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
# 基本設定
UsePAM yes
MaxSessions 10
# 接続維持
ClientAliveInterval 60
ClientAliveCountMax 3
反映:
sudo systemctl reload sshd
Phase 3: VS Code拡張のインストール
3.1 ローカルPCにRemote-SSH拡張をインストール
- VS Codeを起動
-
拡張機能ビュー(
Ctrl+Shift+X
/Cmd+Shift+X
)を開く - "Remote - SSH" で検索
- Microsoft提供の拡張をインストール
3.2 リモートサーバーに接続
-
ウィンドウ左下の緑色アイコン(
><
) をクリック - "Connect to Host..." を選択
-
設定したホスト名(例:
dev-server
) を選択 -
初回接続時の流れ:
- 新しいVS Codeウィンドウが開く
- 「Installing VS Code Server...」と表示(1-3分)
- 完了すると左下に "SSH: dev-server" と表示
接続確認:
- ターミナルを開く(
Ctrl+`
またはCmd+`
) - リモートサーバーのシェルが起動しているはず
# リモートサーバーのターミナルで確認
pwd
# → /home/your_username
echo $VSCODE_AGENT_FOLDER
# → /tmp/your_username/.vscode-server
VS Code Serverとは: VS Codeのバックエンドコンポーネント。リモートサーバーで実行され、ローカルPCのVS Code GUIから操作します。aptインストール不要で、自動ダウンロード・配置されます。
3.3 GitHub Copilotのインストール
重要: リモート側に拡張をインストールします(ローカルPCではない)。
-
拡張ビュー(
Ctrl+Shift+X
)を開く - 上部のタブを確認: "SSH: dev-server" タブになっているか確認
- "GitHub Copilot" を検索
-
"Install in SSH: dev-server" をクリック
- 「Install」ではなく「Install in SSH: ...」を選ぶ
-
GitHubアカウントでサインイン
- ブラウザが開いて認証画面が表示される
- Copilotのサブスクリプションが必要
動作確認:
# 新しいファイルを作成し、コメントを書く
# 関数: リストの合計を計算する
→ グレーの補完候補が表示されれば成功
チャット機能:
- コマンドパレット(
Ctrl+Shift+P
)→Chat: Focus on Chat View
でCopilotチャットを開く - 既定キーバインドは環境により異なるため、必要なら
Keyboard Shortcuts
で「Copilot Chat」を検索し、任意のショートカットを割り当て
3.4 Claude Codeのインストール
- 拡張ビューの「SSH: dev-server」タブで作業
- "Claude Code" を検索(Anthropic提供)
- "Install in SSH: dev-server" をクリック
APIキーの設定:
方法A: VS Code Secret Storage(推奨)
- インストール後、拡張の設定アイコン(⚙️)→ "Extension Settings"
- "Anthropic API Key" を入力
- 暗号化されて安全に保存される
方法B: 環境変数
# リモートの ~/.bashrc に追加
export ANTHROPIC_API_KEY="sk-ant-api03-..."
セキュリティ注意: .bashrc
をgit管理している場合は、必ず .gitignore
に追加してください。
動作確認:
- Claude Codeのチャット機能でコード生成を試す
3.5 Continue(OpenAI用)のインストール
背景: 「OpenAI Codex」は2023年に廃止されました。現在はContinueやCode GPTなどの拡張でOpenAI API(GPT-4o/4.1/mini/o3など)を利用します。
- 拡張ビューの「SSH: dev-server」タブで作業
- "Continue" を検索
- "Install in SSH: dev-server" をクリック
設定ファイルの作成(リモートターミナルで実行):
# ディレクトリ作成
mkdir -p ~/.continue
# 設定ファイル作成
cat > ~/.continue/config.json << 'EOF'
{
"models": [
{
"title": "GPT-4o",
"provider": "openai",
"model": "gpt-4o",
"apiKey": "YOUR_OPENAI_API_KEY"
},
{
"title": "Claude 3.5 Sonnet",
"provider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
"apiKey": "YOUR_ANTHROPIC_API_KEY"
}
],
"tabAutocompleteModel": {
"title": "GPT-4o Mini",
"provider": "openai",
"model": "gpt-4o-mini"
}
}
EOF
# ファイル権限を制限
chmod 600 ~/.continue/config.json
APIキーの安全な管理:
環境変数で渡す場合:
export OPENAI_API_KEY="sk-proj-..."
export ANTHROPIC_API_KEY="sk-ant-api03-..."
動作確認:
- Continue サイドバーからモデルを選択してチャット
- タブ補完が動作(設定した場合)
APIキー取得先:
- OpenAI: https://platform.openai.com/api-keys
- Anthropic: https://console.anthropic.com/
トラブルシューティング
接続エラー
症状: "Could not establish connection to dev-server"
原因1: SSH鍵が正しく登録されていない
# 公開鍵を再登録
ssh-copy-id -i ~/.ssh/id_ed25519.pub dev-server
原因2: known_hostsの衝突
# known_hostsから該当ホストを削除
ssh-keygen -R dev-server
ssh-keygen -R 192.168.1.100
原因3: ProxyJumpが正しく設定されていない
# 詳細ログで確認
ssh -v dev-server
症状: "Name or service not known" (ProxyJump経由の場合)
踏み台サーバーから目的のサーバーへのホスト名解決ができていません。
対処: ~/.ssh/config
でホスト名を明示的に指定
Host dev-server
HostName dev-server # ← 踏み台サーバーが解決できない
ProxyJump bastion
Host dev-server
HostName 10.0.0.50 # ← IPアドレスまたは踏み台から解決可能なFQDN
ProxyJump bastion
拡張が動作しない
症状: Copilot/Claude Codeが反応しない
原因1: 拡張が「UI側(ローカルPC)」にインストールされている
- 誤: "Install" → ローカルPCにインストール
- 正: "Install in SSH: hostname" → リモートにインストール
確認方法: 拡張ビューで「Local」と「SSH: hostname」のタブを切り替えて確認
対処: リモート側に再インストール
原因2: リモートからのアウトバウンド通信がブロックされている
# リモートで確認
curl -I https://api.github.com
curl -I https://api.anthropic.com
curl -I https://api.openai.com
対処:
-
プロキシ設定を追加(リモートの
~/.bashrc
):
export HTTPS_PROXY="http://proxy.example.com:8080"
export NO_PROXY="localhost,127.0.0.1,.local"
- 拡張を「UI側で強制実行」(settings.json):
"remote.extensionKind": {
"github.copilot": ["ui"],
"anthropic.claude-code": ["ui"],
"Continue.continue": ["ui"]
}
UI側実行は制約があり、一部機能が正しく動作しない場合があります。可能な限りリモート側実行を推奨。
原因3: APIキーが正しく設定されていない
- Claude Code: 拡張の設定を確認
- Continue:
~/.continue/config.json
を確認 - 環境変数:
echo $ANTHROPIC_API_KEY
で確認
NFSで重い・固まる
症状: ファイル保存が遅い、VS Codeが応答しなくなる
原因1: VSCODE_AGENT_FOLDERが設定されていない
# リモートで確認
echo $VSCODE_AGENT_FOLDER
# → /tmp/your_username/.vscode-server と表示されるべき
# 設定されていない場合は ~/.bashrc に追加
原因2: inotify制限が低すぎる
# リモートで確認
cat /proc/sys/fs/inotify/max_user_watches
# → 524288 が理想(デフォルトは8192-248213)
対処: 2.2 inotify制限の緩和を実施
原因3: 大きなnode_modules等を監視している
VS Codeの設定(settings.json)に追加:
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/node_modules/**": true,
"**/.venv/**": true,
"**/venv/**": true,
"**/__pycache__/**": true
}
VS Code Server起動失敗(ログインスクリプトの干渉)
症状: "Failed to parse remote port from server output"
接続は成功するが、以下のようなエラーが表示される:
Failed to parse remote port from server output
Could not establish connection to remote server
VS Code の出力パネル(Remote-SSH)に以下のようなログが表示される:
listeningOn====
この listeningOn
フィールドが空になっている場合、VS Code Server がリスニングポート情報を返せなかったことを意味します。
原因: ログインスクリプトが標準出力に余計なメッセージを出力している
リモートサーバーのログインスクリプト(/etc/profile.d/*.sh
や .bashrc
)が、VS Code の起動情報を上書きするメッセージを出力しています。
例: 以下のようなメッセージがログに2回表示される:
OpenAICG2+ (open_cafemol) は現在このシステムで利用可能です。使用するには:
1. ログアウトしてから再度ログインして環境変数を反映させる
2. または、次のコマンドを実行: source /etc/profile.d/openaicg2plus.sh
サンプルファイルは /home/shared/software/OpenAICG2plus/sample/toml_input にあります
Slurmジョブテンプレートは /home/shared/software/OpenAICG2plus/templates にあります
技術的な背景:
VS Code の起動スクリプトは標準出力(stdout)を解析してサーバー情報を取得します。ログインスクリプトの余計な出力により、VS Code が必要な情報(listeningOn
の値)を正しく抽出できません。
対処方法:
方法1: ログインスクリプトを修正する(推奨、要管理者権限)
リモートサーバーで /etc/profile.d/
内の該当スクリプトを編集:
# SSH でリモートにログイン
ssh dev-server
# スクリプトを編集(管理者権限が必要)
sudo nano /etc/profile.d/your-script.sh
スクリプトのメッセージ出力部分を修正:
# 非対話的シェル(VS Code などの自動接続)では何も出力しない
if [ -t 0 ] && [ -t 1 ]; then
# ここに既存の echo 文を入れる
echo "システムメッセージ..."
# ... 残りのメッセージ
fi
if [ -t 0 ] && [ -t 1 ]
は「対話的な端末で実行されている場合のみ」という条件です。
方法2: 個人の設定ファイルで対処する
管理者権限がない場合、自分の ~/.bashrc
の先頭に追加:
# 非対話シェル(sshコマンド実行時やVS Codeの起動スクリプト)では残りを実行しない
case $- in
*i*) ;; # 対話シェルなら続行
*) return ;; # 非対話なら何もせず戻る
esac
この設定により、非対話シェルで .bashrc
が余計な出力を行わなくなり、VS Code Server の出力解析を妨げません。
方法3: ログインメッセージを完全に無効化
リモートサーバーで ~/.hushlogin
ファイルを作成:
ssh dev-server
touch ~/.hushlogin
これにより、Ubuntu のログインメッセージ(システム情報など)が表示されなくなります。
方法4: VS Code の設定を変更する(一時的な回避策)
ローカルの VS Code で以下の設定を変更:
- 設定を開く:
Ctrl+,
(またはCmd+,
) -
settings.json
に追加:
{
"remote.SSH.useLocalServer": false,
"remote.SSH.useExecServer": false
}
- コマンドパレット(
F1
)で実行:Remote-SSH: Kill VS Code Server on Host...
- ホストを選択して再接続
推奨される対処順序:
- まず方法3を試す(すぐに試せる)
- 効果がなければ方法2を試す(自分の設定のみ)
- それでもダメなら方法4を実施(一時的)
- 根本的に解決するなら方法1(管理者に相談)
ProxyJump を使用している場合: 踏み台サーバーと最終目的地の両方でログインスクリプトの出力が問題になる可能性があります。両方のホストで対処が必要な場合があります。
ファイアウォール制約
症状: "Failed to connect to AI service"
組織のファイアウォールでリモートサーバーからの外向き通信が制限されている場合。
対処方法:
- プロキシ設定(前述)
- 拡張を「UI側で強制実行」(前述)
-
オンプレミスLLM対応拡張の利用
- Continue + Ollama(ローカルLLM)
- Code GPT + オンプレミスAPI
パフォーマンス最適化
大規模リポジトリでの設定
VS Codeの設定(settings.json):
{
// Git自動フェッチを無効化
"git.autofetch": false,
// ファイル監視から除外(パフォーマンス向上)
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/node_modules/**": true,
"**/.venv/**": true,
"**/venv/**": true,
"**/__pycache__/**": true,
"**/build/**": true,
"**/dist/**": true,
"**/.next/**": true,
"**/target/**": true
},
// 検索から除外
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/.venv": true,
"**/venv": true,
"**/__pycache__": true,
"**/build": true,
"**/dist": true
},
// TypeScript/JavaScriptの最適化
"typescript.tsserver.maxTsServerMemory": 4096,
// ファイル保存時の自動処理を最小化
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {}
}
複数ノード運用
クラスター環境で複数ノードに接続する場合:
- 各ノードで独立した
/tmp/$USER/.vscode-server
が作成される - ホームディレクトリ(NFS)は共有されるが、VS Code Serverは各ノードのローカルディスク
- 同時接続数は sshd の
MaxSessions
で制限(デフォルト10)
セキュリティとコンプライアンス
SSH接続の安全性
本記事の構成:
項目 | 設定 | 効果 |
---|---|---|
鍵認証 | Ed25519(RSAより安全) | 総当たり攻撃に強い |
接続方式 | ProxyJump | 踏み台経由で安全 |
ForwardAgent | デフォルトOFF | 鍵盗用リスク低減 |
ServerAliveInterval | 60秒 | タイムアウト防止 |
サーバー管理者向け追加設定:
PasswordAuthentication no # パスワードログイン禁止
PermitRootLogin no # root直接ログイン禁止
AllowUsers user1 user2 # 許可ユーザー限定
AI APIへのコード送信ポリシー
重要: AI拡張は選択/編集中のコードをクラウドAPIに送信します。
組織での利用時の推奨:
-
GitHub Copilot Business/Enterprise を使用
- コードが学習に使用されない保証
- 監査ログ取得可能
- 詳細
-
Claude Team/Enterprise を使用
- 同様に学習に使用されない
- SSO連携可能
- 詳細
-
機密コードの除外:
-
.gitignore
に機密ファイルを追加 - AI拡張の設定で特定ディレクトリを除外
-
APIキー管理
優先順位:
順位 | 方法 | 安全性 | 手軽さ |
---|---|---|---|
1位 | VS Code Secret Storage | ⭐⭐⭐ | ⭐⭐ |
2位 | 環境変数(~/.bashrc) | ⭐⭐ | ⭐⭐⭐ |
3位 | 設定ファイル(~/.continue/config.json) | ⭐ | ⭐⭐⭐ |
注意事項:
-
.bashrc
や設定ファイルをgit管理している場合は必ず.gitignore
に追加 - ファイル権限を
chmod 600
に制限 - 定期的にAPIキーをローテーション
よくある質問(FAQ)
Q1: サーバーにVS Code本体をインストールする必要はありますか?
A: いいえ、不要です。
Remote-SSHは初回接続時に「VS Code Server」を自動的にダウンロード・展開します。サーバーにGUI版のVS Codeをaptインストールする必要はありません。
多くのガイドでこの誤解が広まっていますが、公式の仕組みを使えばインストール不要です。
Q2: Node.jsを事前にインストールする必要はありますか?
A: 通常は不要です。
VS Code Serverには必要なNode.jsランタイムが同梱されています。拡張が外部のnode CLIを明示的に呼ぶ場合のみ追加インストールが必要ですが、Copilot/Claude Code/Continueでは不要です。
Q3: "Codex"という拡張が見つかりません
A: OpenAI Codexは2023年に廃止されました。
現在はContinueやCode GPTなどの拡張でOpenAI API(GPT-4o/4.1/mini/o3など)を利用するのが一般的です。
Q4: 拡張をローカルPCとリモートのどちらにインストールすべきですか?
A: AI拡張はリモート側にインストールしてください。
拡張ビューで「Install in SSH: hostname」を選びます。これにより、リモートのコードに直接アクセスでき、ネットワーク遅延も最小化されます。
Q5: 複数のGitHubアカウント/Anthropicアカウントを使い分けられますか?
A: はい、可能です。
- GitHub: VS Codeのアカウント切り替え機能を使用
- Anthropic: 環境変数やプロファイル別の設定ファイルで管理
- プロジェクト毎に
.vscode/settings.json
でAPIキーを上書きも可能(⚠️ 誤コミット注意)
Q6: VS Code Serverが壊れた場合の復旧方法は?
A: VS Code Serverのディレクトリを削除して再接続すると、自動的に再ダウンロードされます。
# リモートのVS Code Serverを削除
ssh dev-server "rm -rf /tmp/\$USER/.vscode-server"
# VS Codeで再接続
# → 自動的に再ダウンロード・展開される
Q7: 京大スパコンなど外部接続が制限された環境では?
A: 以下の対策があります:
- プロキシ設定(HTTPS_PROXY環境変数)
- 拡張を「UI側で強制実行」(remote.extensionKind設定)
- オンプレミスLLM対応拡張の利用(Continue + Ollama等)
セットアップ完了チェックリスト
基本設定
- SSH鍵認証でパスワードなしでリモート接続できる
-
~/.ssh/config
が最適化されている(ProxyJump使用) -
リモートの
.bashrc
にVSCODE_AGENT_FOLDER
設定がある - inotify制限が緩和されている(管理者が実行)
VS Code接続
- VS Code Remote-SSH拡張がインストール済み
- リモートサーバーに接続できる(ウィンドウ左下に「SSH: hostname」)
- ターミナルでリモートサーバーのシェルが起動する
AI拡張
- GitHub Copilot が動作(コード補完とチャット)
- Claude Code が動作(チャット機能)
- Continue(または他のOpenAI対応拡張)が動作
セキュリティ
- パスワード認証を無効化(推奨)
- ForwardAgent がデフォルトOFF
- APIキーが安全に管理されている(Secret Storage or 環境変数)
-
.bashrc
等の設定ファイルがgit管理されていない、または.gitignore
済み - AI APIへのコード送信ポリシーを確認・文書化
参考資料
公式ドキュメント
トラブルシューティング
おわりに
本記事では、リモートUbuntuサーバー上でVS Codeと最新のAI支援ツールを快適に・安全に・高速に動作させるための完全ガイドを提供しました。
重要なポイント:
- ✅ Remote-SSH + 鍵認証 + ProxyJump で安全な接続
- ✅ VSCODE_AGENT_FOLDERでNFSを避ける
- ✅ inotify制限の緩和で大規模リポジトリに対応
- ✅ 拡張はリモート側にインストール
- ✅ APIキーは安全に管理
このセットアップにより、ローカルPCと変わらない快適さで、リモートサーバー上でのAI支援開発が実現できます。
Happy Coding with AI! 🚀