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?

OCIでもvscodeをつかいたい

0
Posted at

はじめに

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 拡張機能をインストール

  1. VS Code を開き、左サイドバーの 拡張機能アイコン(四角が4つ)をクリック
  2. 検索バーに Remote - SSH と入力
  3. 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に接続します。

  1. コマンドパレット(Ctrl+Shift+P)を開く
  2. Remote-SSH: Connect to Host... と入力して選択
  3. 先ほど登録した <Host> を選択
  4. 接続完了 → Open Folder でサーバー上のディレクトリを開く

あとはローカルのファイルを編集するのとまったく同じ感覚です。ターミナルも VS Code 内で開けるので、サーバー上での作業が完結します。


Step 5: つまずき:SSH ごと固まる場合の対処

現象

  1. Remote SSH で接続すると「VS Code Server を初期化中」のまま進まない
  2. ターミナルを開くと「このシェルはローカルで行われます」と表示され、リモートに繋がらない
  3. この状態が続くと 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も使えるようになり環境がよくなりました!


関連記事

henagineerのプログラミング・開発記事まとめ

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?