はじめに
Oracle Cloud Infrastructure(OCI)使っている人はいますかー?
OCIでもVSCODEを使えることが分かったのでそのインストールのメモです。
Remote-SSHってコマンドでWSLにつなぐのと同じ感覚でOCIに接続できるので、便利です。
今回、インストールは簡単にできましたが、以下でつまづいたのでその内容もいれています。
| つまづき | 対処 |
|---|---|
WSL側の .ssh/config を修正していた |
Windows側の .ssh\config の修正が必要 |
.ssh/config のアクセス権が緩くてエラーではじかれた |
適切なアクセス権の設定が必要 |
| OCIのメモリ1GBでVS Code Serverが固まった | スワップの設定が必要 |
対象者
- OCI(または AWS / VPS)のLinuxサーバーを持っている
- WindowsのVS Codeから直接編集したい
環境
- Windows 11
- VS Code + Remote - SSH 拡張機能
- 接続先: OCI Ubuntu 24.04
- OCIの秘密鍵:
.keyファイル
全体の流れ
1. Remote - SSH 拡張機能をインストール
2. 秘密鍵のパーミッションを修正(Windows特有の罠)
3. SSH configファイルに接続先を登録
4. VS Code Remote SSHで接続
5. つまずき:SSH ごと固まる場合の対処
Step 1: Remote - SSH 拡張機能をインストール
- VS Code を開き、左サイドバーの 拡張機能アイコン(四角が4つ)をクリック
- 検索バーに
Remote - SSHと入力 - Remote - SSH(Microsoft製)を選択して インストール をクリック
インストール後、コマンドパレット(Ctrl+Shift+P)で Remote-SSH と入力してコマンドが候補に出れば準備完了です。
Step 2: 秘密鍵のパーミッションを修正
SSHは秘密鍵が「自分だけ読める」状態でないと、他人に漏れるリスクがあるとみなして接続を拒否します。
Windowsで秘密鍵をそのまま使うと、こんなエラーが出ます。
Permissions for '<Secret Key>' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "<Secret Key>": bad permissions
ubuntu@<Host IP Address>: Permission denied (publickey).
LinuxやMacなら chmod 600 で一発ですが、WindowsはACL管理のため別コマンドが必要です。
PowerShellを管理者権限で起動して実行:
$keyPath = "<Secret Key>"
# 継承を無効化して自分だけに読み取り権限を付与
icacls $keyPath /inheritance:r
icacls $keyPath /grant:r "$($env:USERNAME):(R)"
| 環境 | パーミッション設定 |
|---|---|
| Linux / Mac | chmod 600 <Secret Key> |
| Windows |
icacls でACLを絞る |
Step 3: SSH configファイルに接続先を登録
configファイルを作成します。
config の場所は:
C:\Users\<User Name>\.ssh\config
以下を追記します:
Host <Host>
HostName <Host IP Address>
User <User Name>
IdentityFile <Secret Key>
ServerAliveInterval 60
| 項目 | 説明 |
|---|---|
Host |
接続時に使うエイリアス(好きな名前でOK) |
HostName |
サーバーのIPアドレス |
User |
OCIのデフォルトユーザーは ubuntu
|
IdentityFile |
秘密鍵のパス |
ServerAliveInterval |
接続が切れにくくなるおまじない |
登録後にターミナルから以下だけで接続できればconfig設定はOKです:
ssh <Host>
Step 4: VS Code Remote SSHで接続
WSLと同じ感覚でOCIに接続します。
- コマンドパレット(
Ctrl+Shift+P)を開く -
Remote-SSH: Connect to Host...と入力して選択 - 先ほど登録した
<Host>を選択 - 接続完了 → Open Folder でサーバー上のディレクトリを開く
あとはローカルのファイルを編集するのとまったく同じ感覚です。ターミナルも VS Code 内で開けるので、サーバー上での作業が完結します。
Step 5: つまずき:SSH ごと固まる場合の対処
現象
- Remote SSH で接続すると「VS Code Server を初期化中」のまま進まない
- ターミナルを開くと「このシェルはローカルで行われます」と表示され、リモートに繋がらない
- この状態が続くと SSH 自体も繋がらなくなり、OCI コンソールからインスタンスを再起動するしかなくなる
原因
メモリ(1GB)が足らなかった。
VS Code Server は初回起動時に複数の Node.js プロセスを一斉に起動する。拡張機能・言語サーバーの初期化で CPU・メモリを大量消費し、1GB RAM では OOM(Out of Memory)が発生。SSH デーモンまで巻き込んでシステム全体が応答不能になっていた。
接続直後のプロセス状況(実測):
USER PID %CPU %MEM COMMAND
ubuntu 2828 83.3 15.6 vscode-server
ubuntu 2890 44.5 11.4 vscode-server
ubuntu 2912 22.4 7.3 vscode-server
ubuntu 2878 7.1 6.1 vscode-server
4プロセスだけで RAM の約50%を消費している。
解決策:スワップを追加する
こうなるとSSHでもつながらないので、いったんHOSTを再起動しました。その後、OCI インスタンスに SSH でログインして実行:
# 2GB のスワップファイルを作成
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 再起動後も有効にする
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
確認:
free -h
# Swap 行に 2.0Gi と表示されれば成功
スワップ使用量は最大 282MB 程度で安定し、クラッシュしなくなった。
接続中の監視コマンド
問題が起きているか確認したいときは、別ターミナルで:
watch -n 2 'free -h && echo "---" && ps aux --sort=-%mem | head -10'
まとめ
| ステップ | やること |
|---|---|
| Remote-SSHインストール | VS Code の拡張機能から Microsoft 製を入れる |
| パーミッション修正 |
icacls で秘密鍵を自分だけに限定 |
| SSH config登録 |
C:\Users\<User Name>\.ssh\config にエイリアスを定義 |
| VS Code接続 | Remote SSH で <Host> を選ぶだけ |
| OOMで固まる場合 | スワップ 2GB 追加で解消 |
思ったより苦戦しましたが、OCIでVSCODEが動くのは理想的です。
cloudも使えるようになり環境がよくなりました!