Windows WSL 環境でセキュアな Claude Code 実行環境をつくり直してみた
この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2025 | Advent Calendar 2025 - Qiita 1 日目の記事です。
WSL は仮想環境なので、これを機にデータの整理をして、もう元々の Ubuntu 環境を削除しちゃうか…ということで、つくり直していきます。
※ WSL 環境って統合されてるようで実は壁があってつらいですよね (パスの扱いで躓いたり、認証情報がうまく引き継がれなかったり)
※ でも問題が起きてセキュアな環境を構築し直したい時は、WSL もいいじゃん!作り直せばいいし!という前向きな気持ちでやっていきます
手順概要
Ubuntu 環境をキレイにして、セキュアな環境を構築していきたいので、下記のような流れになります。
イメージとしては、安全な環境に必要なデータだけ移行するような感じです。
- 念のため丸ごとバックアップ ← 保険なので必要なければスキップ
- 新しい Ubuntu 環境用意
- セキュアな環境構築
- AWS CLI インストール
- Claude Code インストール
- AWS Vault 導入(AWS 認証情報のセキュア管理)
- データコピー
- 元の Ubuntu 環境の削除
既存の Ubuntu 環境削除しないよって方は、3 ~ 6 までを一読してもらえればと思います。
手順 1: 念のため丸ごとバックアップ (保険)
- 保存先は好きな場所に (自分のユーザのドキュメントフォルダ配下等)
- 時間がかかります (数分 ~ 十数分)
- ファイルサイズが大きい可能性あり (数 GB ~ 数十 GB)
# PowerShell で実行
# 現在のディストリビューション一覧を確認
wsl -l -v
# バックアップ用ディレクトリを作成
mkdir C:\wsl-backup
# Ubuntu を丸ごとエクスポートしてバックアップ
wsl --export Ubuntu C:\wsl-backup\ubuntu-backup.tar
画像ファイル等無し、データ 1 GB 以下程度の環境で 3 分ぐらい、バックアップファイルは 約 10 GB でした。
手順 2: 新しい Ubuntu 環境用意
# PowerShell で実行
# 現在のディストリビューション確認
wsl -l -v
# 利用可能なディストリビューション一覧
wsl --list --online
# 新しい Ubuntu をインストール(例: Ubuntu-24.04)
# 初回起動でユーザー名とパスワードを設定します。
wsl --install -d Ubuntu-24.04
# ubuntu 環境にログインするので抜ける
exit
# ディストリビューション確認
wsl -l -v
TIPS:
Windows のターミナルを利用している場合に、古い Ubuntu 環境情報が残ってる場合、設定からプロファイル削除できます。


手順 3: セキュアな環境構築
WSL 本体の更新
wsl --update で Linux カーネルの脆弱性修正や WSL の不具合修正が適用されます。
# PowerShell で実行
# WSL 本体・カーネルを最新に更新 (セキュリティ修正を適用)
wsl --update
# バージョン確認
wsl --version
# 更新があった場合、WSL を再起動して更新を反映
wsl --shutdown
セキュリティアップデート
Ubuntu を最新にアップデートします。
apt upgrade では npm パッケージ等のアプリケーションは更新されません。
npm コマンドを無効化している場合などは、npm 自体の更新もされません。
更新されるもの:
システムパッケージ (curl, git, vim など), セキュリティパッチ, OS 関連ライブラリ
更新されないもの (例) :
npm パッケージ (node_modules/ 内), pip パッケージ (Python ライブラリ)
# パッケージリストを更新
sudo apt update
# パッケージを最新版にアップグレード
sudo apt upgrade -y
アップデートは、週 1 回程度か、何か WSL 上で実行する時に気づいたら手動で実行してます。
不要なパッケージの削除
アップデート時に不要になった古いパッケージや依存関係を削除します。
apt upgrade で新しいパッケージに更新すると、古いバージョンのパッケージがシステムに残るので autoremove で削除していきます。
# 不要なパッケージを自動削除 (アップデート後に行う)
sudo apt autoremove -y
必要なツールのインストール
「とりあえず入れとく」はやめて、必要なものだけをインストールし、使うタイミングで都度追加します。
今回は AWS CLI を導入するので、必要な unzip コマンドだけ先にインストールします。
# 必要最低限のツールだけインストール
sudo apt install unzip -y
手順 4: AWS CLI インストール
AWS CLI のインストール
# AWS CLI v2 をダウンロード
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# ダウンロードファイルを解凍
unzip awscliv2.zip
# AWS CLI をインストール
sudo ./aws/install
# インストール確認
aws --version
# インストール後、一時ファイルを削除
rm -rf aws awscliv2.zip
AWS CLI 初期設定
# AWS 認証情報を設定
aws configure
# プロンプトに従って入力:
# AWS Access Key ID: # 平文で残したくない為何も入力しない
# AWS Secret Access Key: # 平文で略
# Default region name: ap-northeast-1 # 東京リージョン
# Default output format: json
手順 5: Claude Code インストール
Claude Code のインストール
以前は npm でインストールする手順があり、その場合は Node.js のインストールが必要でした。
今回は今推奨されている curl コマンドのインストール方法で実行していきます。
# ネイティブインストーラーでインストール
curl -fsSL https://claude.ai/install.sh | bash
結果が返ってきて、claude は ~/.local/bin/claude にあるとのことです。
$curl -fsSL https://claude.ai/install.sh | bash
Setting up Claude Code...
✔ Claude Code successfully installed!
Version: 2.0.55
Location: ~/.local/bin/claude
Next: Run claude --help to get started
⚠ Setup notes:
• Native installation exists but ~/.local/bin is not in your PATH. Run:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
✅ Installation complete!
パスに追加していきます。
# PATH に追加
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
# インストール確認
claude --version
Claude 認証
# claude を実行するディレクトリを作って移動
mkdir -p ~/claudecode-workspace
cd ~/claudecode-workspace
# Claude Code を起動
claude
# 初回起動時に認証プロンプトが表示されます
# 画面の指示に従って認証を完了してください
CLAUDE.md ファイルの生成
試しに CLAUDE.md を作っておきます。
# Claude Code 内で実行
日本語で回答をするための CLAUDE.md ファイルを作成してください
# 生成されたファイルを確認
/exit
cat CLAUDE.md
手順 6: AWS Vault 導入(AWS 認証情報のセキュア管理)
AWS Vault とは
AWS 認証情報を暗号化して安全に管理することができるツールです。
認証情報を平文で保存せず、 OS の安全なキーチェーン (Windows の場合 Credential Manager) に保存してくれます。

平文の credential ファイルは必要なく、コマンド実行ごとに一時的なセッションキーを発行して実行できます。
必要なツールのインストール
# 前提ライブラリ
sudo apt install build-essential -y
# Homebrew のインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Homebrew の設定
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
# gcc をインストール
brew install gcc
# aws-vault と関連ツールのインストール
brew install aws-vault pass gnupg
GPG 鍵の作成と pass の初期化
# GPG 鍵を生成(名前、メールアドレスは example 等なんでも OK)
gpg --gen-key
# 作成されたキー ID を確認(長い英数字の文字列)
gpg --list-keys
# pass を初期化(上記で確認した結果の 40 桁のキー ID を使用)
pass init <キー ID>
環境変数の設定
# ~/.bashrc に追加 (EOF まで入力)
cat << 'EOF' >> ~/.bashrc
# aws-vault 設定
export AWS_VAULT_BACKEND=pass
export AWS_VAULT_PASS_PREFIX=aws-vault
export AWS_SESSION_TOKEN_TTL=3h
export GPG_TTY=$(tty)
EOF
# 反映
source ~/.bashrc
AWS 認証情報の設定
~/.aws/config ファイルを確認して、必要な情報を追記してください
例 (スイッチロール + MFA 設定している場合)
[default]
region = ap-northeast-1
output = json
[profile stg]
role_arn = arn:aws:iam::<AWSアカウントID>:role/<IAMユーザ名> # スイッチロール先の IAM ロール
mfa_serial = arn:aws:iam::<AWSアカウントID>:mfa/<IAMユーザ名> # MFA デバイスの ARN
source_profile = default
duration_seconds = 3600 # セッションの有効期限 1 時間
セッションの有効期限は 1 時間にしておきます。
# aws-vault にプロファイルを追加
aws-vault add default
# プロンプトで Access Key ID, Secret Access Key, MFA Device ARN を入力
# 登録確認
aws-vault list
動作確認
# aws-vault 経由で AWS コマンドを実行
aws-vault exec <プロファイル名> -- aws s3 ls
# GPG パスフレーズと MFA トークン(設定した場合)を入力
成功すれば S3 バケット一覧が表示されます。
日常的な使い方
# 単発コマンド
aws-vault exec <プロファイル名> -- aws s3 ls
# 複数コマンドを実行する場合(シェル起動)
aws-vault exec <プロファイル名> -- bash
aws s3 ls
aws ec2 describe-instances
exit
Claude に AWS Vault を使って調査してもらう
aws-vault の MFA 認証は対話的な入力が必要なので、Claude が自動実行するのは難しそうです。
事前にセッションを確立してから Claude に調査依頼をしてみます。
手順
# ユーザー側で事前に MFA 認証を通す
aws-vault exec <プロファイル名> -- aws sts get-caller-identity
# ここで MFA コードを入力
# シェルに入る(セッションが有効な間、コマンドを実行可能)
aws-vault exec <プロファイル名> -- bash
# このシェル内で Claude にコマンド実行を依頼
claude
これで Claude にコマンドを実行してみてもらったら成功しました。
s3 バケット一覧を取得してください

未来では aws login を使ってもっといい感じに Claude 上で操作できるようになると思います。
セッション切れの場合は、一度シェルを抜けて再度 aws-vault exec <profile> -- bash を実行してください。
セッション時間については、~/.aws/config ファイルでご自身の適切な時間に設定することをお勧めします。
トラブルシューティング
aws-vault 実行時に、GPG のバージョン不整合エラーがでました。
gpg: WARNING: server 'gpg-agent' is older than us (2.4.4 < 2.4.8)
gpg: WARNING: server 'keyboxd' is older than us (2.4.4 < 2.4.8)
gpg: WARNING: server 'keyboxd' is older than us (2.4.4 < 2.4.8)
この警告は動作には問題ないので、無視しても OK です。
解決方法:
ソースから gnupg 2.4.8 以上をビルドすれば解消可能 (今の WSL Ubuntu 環境だとできないかも?)
※ コマンドでの解消方法を書こうと思いましたが力尽きました。
手順 7: データコピー
やったことメモ
- .bashrc や .zshrc は古い設定をそのまま使わず、必要な部分だけコピー
- 認証情報のパーミッションは必ず正しく設定 (600)
Windows エクスプローラーで手動コピー
Win + R キー → \\wsl$ を入力 → OK をクリック

対象の WSL 環境を開いた後もう一度
Win + R キー → \\wsl$ を入力 → OK をクリック
元の WSL 環境を開いて、ファイルをコピー&ペースト
※ コマンドでしようと思ったのですが力尽きました。
WSL コマンドチートシートを張っておきます。
# Linux 環境で現在のディレクトリのフォルダをエクスプローラーで開く
powershell.exe /c start .
# Linux 環境からコマンド実行してホストマシンの C ドライブ等へアクセス
/mnt/c/Users/<ユーザー名>/
# エクスプローラーで上記を入力して Linux 領域を開く
\\wsl$\
手順 8: 元の Ubuntu 環境の削除
元の Ubuntu 環境を削除する場合は、下記コマンドで削除してください。
Ubuntu 環境の削除
# PowerShell で実行
# ディストリビューション名確認
wsl -l -v
# Ubuntu 環境を削除
wsl --unregister <ディストリビューション名>
最後に
aws login を使ってもっといい未来が来ることを願って寝て待ちます。
これを機に皆さんの Claude Code 実行環境のセキュリティを見直す機会になれば嬉しく思います。
Ubuntu 環境をリフレッシュして、素敵な WSL ライフをお過ごしください!
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、さまざまな背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。







