0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

完全版】リモートUbuntuでVS Code + Copilot/Claude/OpenAIを動かす最適構成

Last updated at Posted at 2025-10-17

はじめに

リモートサーバー上で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やネットワークストレージ上での開発で困っている方

目次

  1. アーキテクチャと設計方針
  2. 前提条件
  3. セットアップ手順
  4. トラブルシューティング
  5. パフォーマンス最適化
  6. セキュリティとコンプライアンス
  7. よくある質問(FAQ)

アーキテクチャと設計方針

全体構成

ローカル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サブスクリプション(登録
  • Anthropic APIキー取得
  • OpenAI APIキー(オプション、取得

組織利用の場合: 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設定ファイルで、接続を簡潔かつ安全に管理します。

~/.ssh/config
# 共通設定
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 に以下を追加します。

~/.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(これでは不足)

緩和スクリプト(サーバー管理者に実行してもらう):

setup-vscode-remote-inotify.sh
#!/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の強化(オプション、要管理者権限)

セキュリティを強化する場合、サーバー管理者に以下の設定を依頼します。

/etc/ssh/sshd_config.d/security.conf
# 鍵認証のみ許可
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拡張をインストール

  1. VS Codeを起動
  2. 拡張機能ビューCtrl+Shift+X / Cmd+Shift+X)を開く
  3. "Remote - SSH" で検索
  4. Microsoft提供の拡張をインストール

Remote-SSH拡張

3.2 リモートサーバーに接続

  1. ウィンドウ左下の緑色アイコン(>< をクリック
  2. "Connect to Host..." を選択
  3. 設定したホスト名(例: dev-server を選択
  4. 初回接続時の流れ:
    • 新しい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ではない)。

  1. 拡張ビューCtrl+Shift+X)を開く
  2. 上部のタブを確認: "SSH: dev-server" タブになっているか確認
  3. "GitHub Copilot" を検索
  4. "Install in SSH: dev-server" をクリック
    • 「Install」ではなく「Install in SSH: ...」を選ぶ
  5. GitHubアカウントでサインイン
    • ブラウザが開いて認証画面が表示される
    • Copilotのサブスクリプションが必要

動作確認:

test.py
# 新しいファイルを作成し、コメントを書く
# 関数: リストの合計を計算する

→ グレーの補完候補が表示されれば成功

チャット機能:

  • コマンドパレット(Ctrl+Shift+P)→ Chat: Focus on Chat View でCopilotチャットを開く
  • 既定キーバインドは環境により異なるため、必要なら Keyboard Shortcuts で「Copilot Chat」を検索し、任意のショートカットを割り当て

3.4 Claude Codeのインストール

  1. 拡張ビューの「SSH: dev-server」タブで作業
  2. "Claude Code" を検索(Anthropic提供)
  3. "Install in SSH: dev-server" をクリック

APIキーの設定:

方法A: VS Code Secret Storage(推奨)

  1. インストール後、拡張の設定アイコン(⚙️)→ "Extension Settings"
  2. "Anthropic API Key" を入力
  3. 暗号化されて安全に保存される

方法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など)を利用します。

  1. 拡張ビューの「SSH: dev-server」タブで作業
  2. "Continue" を検索
  3. "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キーの安全な管理:

環境変数で渡す場合:

~/.bashrc(リモートサーバー)
export OPENAI_API_KEY="sk-proj-..."
export ANTHROPIC_API_KEY="sk-ant-api03-..."

動作確認:

  • Continue サイドバーからモデルを選択してチャット
  • タブ補完が動作(設定した場合)

トラブルシューティング

接続エラー

症状: "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

対処:

  1. プロキシ設定を追加(リモートの ~/.bashrc):
export HTTPS_PROXY="http://proxy.example.com:8080"
export NO_PROXY="localhost,127.0.0.1,.local"
  1. 拡張を「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 で以下の設定を変更:

  1. 設定を開く: Ctrl+, (または Cmd+,)
  2. settings.json に追加:
{
    "remote.SSH.useLocalServer": false,
    "remote.SSH.useExecServer": false
}
  1. コマンドパレット(F1)で実行:
    Remote-SSH: Kill VS Code Server on Host...
    
  2. ホストを選択して再接続

推奨される対処順序:

  1. まず方法3を試す(すぐに試せる)
  2. 効果がなければ方法2を試す(自分の設定のみ)
  3. それでもダメなら方法4を実施(一時的)
  4. 根本的に解決するなら方法1(管理者に相談)

ProxyJump を使用している場合: 踏み台サーバーと最終目的地の両方でログインスクリプトの出力が問題になる可能性があります。両方のホストで対処が必要な場合があります。


ファイアウォール制約

症状: "Failed to connect to AI service"

組織のファイアウォールでリモートサーバーからの外向き通信が制限されている場合。

対処方法:

  1. プロキシ設定(前述)
  2. 拡張を「UI側で強制実行」(前述)
  3. オンプレミス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秒 タイムアウト防止

サーバー管理者向け追加設定:

/etc/ssh/sshd_config.d/security.conf
PasswordAuthentication no        # パスワードログイン禁止
PermitRootLogin no               # root直接ログイン禁止
AllowUsers user1 user2           # 許可ユーザー限定

AI APIへのコード送信ポリシー

重要: AI拡張は選択/編集中のコードをクラウドAPIに送信します。

組織での利用時の推奨:

  1. GitHub Copilot Business/Enterprise を使用

    • コードが学習に使用されない保証
    • 監査ログ取得可能
    • 詳細
  2. Claude Team/Enterprise を使用

    • 同様に学習に使用されない
    • SSO連携可能
    • 詳細
  3. 機密コードの除外:

    • .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: 以下の対策があります:

  1. プロキシ設定(HTTPS_PROXY環境変数)
  2. 拡張を「UI側で強制実行」(remote.extensionKind設定)
  3. オンプレミスLLM対応拡張の利用(Continue + Ollama等)

セットアップ完了チェックリスト

基本設定

  • SSH鍵認証でパスワードなしでリモート接続できる
  • ~/.ssh/config が最適化されている(ProxyJump使用)
  • リモートの .bashrcVSCODE_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! 🚀


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?