Table of Contents
はじめに
この記事では、Windows 11上のVSCodeからRemote-SSHを使ってVPSに接続する手順をまとめます。
特に次の3点に焦点を当てています。
- 秘密鍵の「正しい置き場所」
- パスフレーズ付き秘密鍵の扱い方
- SSHポートが22以外の場合の設定方法
ローカル環境は Windows 11、VPS側は一般的なLinuxサーバー(Ubuntuなど)を想定しています。
全体の構成イメージ
やりたいことはシンプルで、
- Windows 11 上の VSCode から
- SSH 経由で VPS に接続し
- VSCode 上でリモートのファイルを編集・開発する
という構成です。
このとき、キモになるのが以下の3ファイル場所です。
- 秘密鍵:
C:\Users\<ユーザー名>\.ssh\id_xxxxxなど - SSH 設定:
C:\Users\<ユーザー名>\.ssh\config - known_hosts:
C:\Users\<ユーザー名>\.ssh\known_hosts(初回接続時に自動で更新)
秘密鍵の置き場所(Windows 11)
Windows 11では、ユーザーごとのホームディレクトリ直下に.sshフォルダを作り、その中に秘密鍵を置くのが最もシンプルです。
- パス:
C:\Users\<あなたのユーザー名>\.ssh\ - 例:
C:\Users\taro\.ssh\id_xxxxx
この場所に置いておくと、
- コマンドラインの
sshコマンド - VSCode Remote-SSH
の両方がデフォルトでこの秘密鍵を探してくれるため、設定が楽になります。
SSH 設定ファイル(config)の場所と役割
config の場所
VSCode Remote-SSHが通常使用するSSH設定ファイルは次の場所です。
- ユーザー用:
C:\Users\<ユーザー名>\.ssh\config
この記事では、このユーザー用 config に VPS の設定を書いていきます。
config の基本構造
最小限の設定例は次のようになります。
Host my-vps HostName xxx.xxx.xxx.xxx # VPS のIPまたはホスト名 User ubuntu # VPS 上のユーザー名 IdentityFile ~/.ssh/id_xxxxx IdentitiesOnly yesそれぞれの意味は以下の通りです。
Host: VSCode やsshコマンドから呼び出すときの「ニックネーム」HostName: 実際の接続先(VPS のグローバルIPやドメイン)User: VPS 側のログインユーザー(root,ubuntu,ec2-userなど)IdentityFile: 使用する秘密鍵へのパスIdentitiesOnly yes: 指定した鍵だけを使うようにするオプション(余計な鍵を試さない)
ここまで書いておくと、ターミナルでは ssh my-vps、VSCode では my-vps を選ぶだけで接続できるようになります。
秘密鍵にパスフレーズを設定している場合
秘密鍵にパスフレーズを付けていても問題なく使えます。
考え方は、
- 毎回入力しても良いか
- 一度入力したらキャッシュしたいか
で分かれます。
1. 毎回 VSCode でパスフレーズを入力する
最もシンプルなのは、config に鍵を指定し、そのまま使う方法です。
Host my-vps HostName xxxx.xxx.xxx.xxx User ubuntu IdentityFile ~/.ssh/id_xxxxx # パスフレーズ付き鍵 IdentitiesOnly yesこの設定で Remote-SSH から接続すると、VSCode 側がパスフレーズ入力ダイアログを出してくれます。
セキュリティ的には安全ですが、接続のたびに入力が必要になります。
2. ssh-agent でパスフレーズをキャッシュする
Windows 11 には OpenSSH の ssh-agent が標準で入っているため、これを使うと
- 起動直後に1回パスフレーズを入力
- その後は VSCode からの接続で聞かれない
という運用が可能です。
ssh-agent を有効化する
管理者権限の PowerShell を開き、次を実行します。
Set-Service ssh-agent -StartupType AutomaticStart-Service ssh-agentGet-Service ssh-agent # Status が Running になっていることを確認これで、Windows 起動時に ssh-agent が自動起動するようになります。
鍵を ssh-agent に登録する
通常のユーザー権限の PowerShell で、次を実行します。
ssh-add $env:USERPROFILE\.ssh\id_xxxxx# 実行するとパスフレーズを1回聞かれる成功すると、ssh-agent がこの鍵とパスフレーズを保持します。
あとは VSCode を起動して Remote-SSH で接続すれば、パスフレーズ入力なしで接続できます。
ポートが22番以外の場合の設定
VPS側でSSHポートを22以外(例えば2222)に変えているケースもよくあります。
この場合も、configにPortを書くだけです。
config に Port を追加する
Host my-vps HostName xxx.xxx.xxx.xxx User ubuntu Port 2222 # ← ここでポート番号を指定 IdentityFile ~/.ssh/id_xxxxx IdentitiesOnly yesこれで、ssh my-vpsもVSCode Remote-SSHのmy-vpsも、デフォルトの22ではなく2222に接続します。
よくあるハマりどころ
-
VSCode 側で、
HostNameに直接xxx.xxx.xxx.xxxを打って接続していると、Port設定が効きません
→ 必ずHost my-vpsに書いた「名前」を選ぶようにします。 -
VSCode がどの
configを読んでいるか分からない場合は、設定ファイルを明示します
VSCode の設定(settings.json)に次のように書きます。"remote.SSH.configFile": "C:\\Users\\<ユーザー名>\\.ssh\\config"
この2点を揃えておけば、「なぜか22番に繋ぎに行く」といったトラブルはかなり減ります。
VSCode Remote-SSH からの接続手順
ここまでの設定が完了していれば、VSCode からの操作は非常にシンプルです。
- VSCode に「Remote - SSH」拡張機能をインストールする
- VSCode 左下の緑色のエリアをクリックし、「Remote-SSH: Connect to Host…」を選ぶ
- 一覧から
my-vpsを選択する(configのHost名) - 初回接続時は、接続先を
known_hostsに追加するか聞かれるので承認する - 接続が完了すると、新しいウィンドウでリモート側の VSCode セッションが立ち上がる
- 左側の「Explorer」からリモートのフォルダを選び、「Open Folder」で開く
これで、リモートの VPS 上のファイルを、ローカルの VSCode から直接編集できるようになります。
まとめ
この記事では、Windows 11のVSCode Remote-SSHでVPSに接続するために必要なポイントを整理しました。
- 秘密鍵は
C:\Users\<ユーザー名>\.ssh\に置くのが基本 C:\Users\<ユーザー名>\.ssh\configにHost,HostName,User,IdentityFile,Portを設定する- パスフレーズ付き鍵は、そのまま使うか
ssh-agentでキャッシュする - ポートが 22 以外のときは
Portを忘れずに指定する - VSCode 側では
Host名を選ぶことと、必要に応じてremote.SSH.configFileを明示することが重要
このあたりをテンプレ化しておくと、新しい VPS を立てたときも数分で VSCode から接続できるようになります。