1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

古いLIFEBOOKをUbuntu開発機にする【3. VS Code Remote - SSH接続編】

1
Last updated at Posted at 2026-09-09

目次


はじめに

メインPCのDELLでフリーズやWSL切断などの不調が発生し、原因調査や修理中も開発を止めないため、以前使っていた古いLIFEBOOKをUbuntu開発機として再利用しています。

シリーズ第1回ではLIFEBOOKへ Ubuntu 24.04.4 LTS Desktop をインストールし、第2回では OpenSSH Server・公開鍵認証・UFW まで構築しました。

第2回で、WindowsのPowerShellからは次のコマンドだけでLIFEBOOKへSSH接続できる状態になっています。

ssh lifebook

今回の第3回では、このSSH接続を Visual Studio CodeのRemote - SSH拡張機能 から利用し、Windows上のVS Codeを操作画面として使いながら、実際のファイル操作やターミナル処理をLIFEBOOK上で行えるようにします。

最終的なイメージは次のとおりです。

メインPC(Windows)
    │
    │ Visual Studio Code
    │ Remote - SSH
    │ SSH公開鍵認証
    ▼
LIFEBOOK
Ubuntu 24.04.4 LTS Desktop
    │
    ├─ VS Code Server
    ├─ Git
    ├─ Docker Engine
    └─ Laravel / Sail

Visual Studio Code公式では、Remote - SSHで接続する前に、ターミナルやPowerShellから対象SSHホストへ接続できることを確認する手順になっています。

今回は第2回で ssh lifebook まで確認済みの状態から開始します。


今回の導入環境

項目 内容
リモートPC 富士通 LIFEBOOK AH52/C
型名 FMVA52CBJ
CPU Intel Pentium P6200 2.13GHz
メモリ 8GB
ストレージ 256GB SSD
リモートOS Ubuntu 24.04.4 LTS Desktop
アーキテクチャ x86_64
Ubuntuユーザー honta
接続元 WindowsメインPC
Windows側IPv4 192.168.11.2
LIFEBOOK側IPv4 192.168.11.9/24
接続方式 家庭内Wi-Fi / LAN
作業時VS Code 1.133.0
作業時Remote - SSH 0.128.0
Windows OpenSSH Client OpenSSH_for_Windows_9.5p2
SSHホスト名 lifebook

作業時のRemote - SSHログでは、Windows x64版VS CodeからLIFEBOOKのLinux環境へ接続していることを確認しました。

VS CodeやRemote - SSHのバージョンは更新されます。

この記事のバージョン番号は今回の実作業時点の記録です。操作名や画面表示が将来変わる可能性があるため、最新仕様はVisual Studio Code公式ドキュメントも確認してください。


今回作る構成

第2回でWindows側のSSH configを次のように設定済みです。

Host lifebook
    HostName 192.168.11.9
    User honta
    IdentityFile ~/.ssh/id_ed25519_lifebook
    IdentitiesOnly yes

Windowsの ssh-agent にLIFEBOOK専用のEd25519秘密鍵も登録済みです。

そのためRemote - SSHでは、IPアドレスやユーザー名を毎回入力せず、

lifebook

というSSHホスト名をそのまま利用できます。

VS Code
  │
  │ Remote-SSH: Connect to Host...
  ▼
lifebook
  │
  │ ~/.ssh/config
  ▼
192.168.11.9
  │
  │ SSH公開鍵認証
  ▼
Ubuntu / honta

1. 事前にPowerShellからSSH接続を確認する

Visual Studio Code公式では、Remote - SSHを使う前に、まず通常のSSHクライアントから接続できることを確認するよう案内されています。

今回も、Windows PowerShellで先に確認しました。

ssh lifebook

正常なら、

Welcome to Ubuntu 24.04.4 LTS ...
...
honta@lifebook-ubuntu:~$

まで入れます。

さらにTCP/22の疎通を切り分けたい場合は、

Test-NetConnection 192.168.11.9 -Port 22

も利用できます。

今回の正常時は、

TcpTestSucceeded : True

でした。

Remote - SSHで問題が発生した場合でも、最初からVS Codeの設定を変更するのではなく、まず通常の ssh lifebook が成功するか確認します。

PowerShellからもSSH接続できない場合、VS Codeより手前のネットワーク・OpenSSH Server・電源状態などを確認する必要があります。


2. Remote - SSH拡張機能をインストールする

Windows側のVisual Studio Codeを開きます。

拡張機能ビューは、

Ctrl + Shift + X

で開けます。

検索欄で、

Remote - SSH

を検索しました。

今回インストールしたのは Microsoft製のRemote - SSH拡張機能 です。

確認した識別子は、

ms-vscode-remote.remote-ssh

でした。

そのまま「インストール」を実行します。

Visual Studio Code公式ドキュメントでも、Remote - SSHを利用するための事前準備として、

  • OpenSSH互換SSHクライアント
  • Visual Studio Code
  • Remote - SSH拡張機能

が案内されています。


3. VS CodeからLIFEBOOKへ接続する

Remote - SSHをインストールしたら、コマンドパレットを開きます。

Ctrl + Shift + P

次のコマンドを選択します。

Remote-SSH: Connect to Host...

接続先一覧に、第2回でSSH configへ登録した、

lifebook

が表示されたため選択しました。

Visual Studio Code公式では、SSH configに登録したホストは Remote-SSH: Connect to Host... の接続先として利用できます。

今回のWindows側SSH configは、

Host lifebook
    HostName 192.168.11.9
    User honta
    IdentityFile ~/.ssh/id_ed25519_lifebook
    IdentitiesOnly yes

なので、VS Code側でも lifebook を選ぶだけで同じ接続情報を利用できます。


4. 接続先OSとしてLinuxを選択する

初回接続時、VS Codeからリモートホストのプラットフォーム選択を求められました。

表示された選択肢から、

Linux

を選択しました。

接続先のLIFEBOOKは、

Ubuntu 24.04.4 LTS Desktop

なので、Linuxを選択します。

Visual Studio Code公式では、接続先プラットフォームを自動判定できない場合に手動選択を求められ、選択結果は remote.SSH.remotePlatform に保存されると説明されています。

ここで選択するのは、VS Codeを操作しているWindows側ではなく、接続先リモートホストのOSです。

今回の接続先はUbuntuなので Linux を選びました。


5. VS Code Serverの初期化を待つ

接続を開始すると、VS Code右下にリモートホストを設定している旨が表示されました。

今回の画面では、概ね次の状態になりました。

SSH ホスト lifebook を設定しています
VS Code Server を初期化中

Visual Studio Code公式では、Remote - SSHで接続するとリモート側にVS Code Serverがセットアップされ、ローカルのVS Codeと通信すると説明されています。

つまり、今回の構成は単純なファイル転送ではありません。

Windows側
Visual Studio Code
    │
    │ SSH
    ▼
LIFEBOOK側
VS Code Server
    │
    ├─ ファイル操作
    ├─ ターミナル
    ├─ 拡張機能
    └─ 開発処理

となります。

Remote - SSH接続後に開く統合ターミナルは、WindowsのPowerShellではなく、接続先LIFEBOOK上のシェルとして動作します。

Visual Studio Code公式でも、Remote - SSH接続後に新しく開いたターミナルはリモートホスト上で実行されると説明されています。


6. Remote - SSH接続を確認する

接続成功後、VS Code左下のステータスバーに、

SSH: lifebook

と表示されました。

これで現在のVS Codeウィンドウが、LIFEBOOKへRemote - SSH接続していることを確認できます。

さらにVS Codeの統合ターミナルを開きました。

Ctrl + `

今回のプロンプトは、

honta@lifebook-ubuntu:~$

となりました。

念のため、次のコマンドでも確認します。

hostname
whoami
pwd

期待する結果は、

lifebook-ubuntu
honta
/home/honta

です。

今回の実作業でも、

pwd

の結果が、

/home/honta

となることまで確認できました。

これで、

Windows上のVS Code
      ↓
Remote - SSH
      ↓
LIFEBOOK Ubuntu
      ↓
/home/honta

という開発経路が完成しました。


7. リモート側のフォルダを開く

Remote - SSH接続直後は、空のVS Codeウィンドウとして接続できます。

Visual Studio Code公式では、接続後に、

File > Open...

または、

File > Open Workspace...

からリモートホスト上のフォルダやWorkspaceを開けると案内されています。

例えば、今後LIFEBOOK上へGit cloneしたプロジェクトが、

/home/honta/projects/review-app-laravel

にある場合は、そのフォルダをRemote - SSH接続中のVS Codeから開く形になります。

この状態ではVS Codeの画面はWindows側にありますが、ファイルやターミナルはLIFEBOOK側を操作しています。

Windows
  └─ VS Codeの画面・キーボード操作
          │
          │ SSH
          ▼
LIFEBOOK
  ├─ ソースコード
  ├─ Git
  ├─ Docker
  └─ Laravel / Sail

このシリーズでは、Windows側へPHP等の開発環境を追加せず、Ubuntu実機側へDocker開発環境を構築する方針です。

Remote - SSHを使うことで、WindowsのVS Codeを使いながら、実際の開発処理はLIFEBOOK側へ寄せられます。


今回躓いたポイント

初回接続が Connection timed out になった

最初のRemote - SSH接続では失敗しました。

Remote - SSHログでは、Windows標準のOpenSSH Client自体は正常に検出されていました。

C:\WINDOWS\System32\OpenSSH\ssh.exe
OpenSSH_for_Windows_9.5p2

VS Codeは次のようなSSHコマンドで lifebook へ接続しようとしていました。

"C:\WINDOWS\System32\OpenSSH\ssh.exe" -T -D ... lifebook sh

しかし、その後、

ssh: connect to host 192.168.11.9 port 22: Connection timed out

となりました。

後続では、

Failed to parse remote port from server output
Resolver error: Error

も表示されていました。

この時点では、VS Code Serverのインストール失敗が原因とは判断しませんでした。

決定的だったのは、

ssh: connect to host 192.168.11.9 port 22: Connection timed out

です。

つまり、VS Code Serverより前の段階でSSH接続自体が成立していません。

原因はLIFEBOOKの自動サスペンド

LIFEBOOK本体を確認すると、自動サスペンドしていました。

つまり今回の実際の流れは、

PowerShellからSSH接続成功
  ↓
Remote - SSH設定開始
  ↓
LIFEBOOKをしばらく放置
  ↓
LIFEBOOKが自動サスペンド
  ↓
Wi-Fi / SSHへ到達できなくなる
  ↓
Remote - SSH
Connection timed out

でした。

OpenSSHやRemote - SSHの設定ミスではありませんでした。

Ubuntu側の電源設定を見直してLIFEBOOKを起こした後、Remote - SSHを再試行すると正常に接続できました。

Connection timed out は、Remote - SSH固有のエラーとは限りません。

今回のように、

  • リモートPCがサスペンドしている
  • ネットワークが切れている
  • SSHポートへ到達できない

といった、VS Codeより手前の原因でも発生します。

内蔵Wi-Fiも不安定だった

このLIFEBOOKは、Ubuntu化する以前のWindows 10時代から最近Wi-Fiが不安定でした。

そのため、Remote - SSHでネットワークが不安定になった場合も、UbuntuやVS Codeだけを原因とは判断しませんでした。

開発サーバーとして継続利用するため、安定性を優先する場合は有線LAN化も検討しました。

これは今回使用したLIFEBOOKで確認できた事象です。

「Remote - SSHではWi-Fiが不安定になる」「Ubuntuだから不安定」という意味ではありません。


Remote - SSHログから切り分ける

Visual Studio Code公式では、接続時の詳細ログを Remote - SSH output channel で確認できると案内されています。

今回も、接続失敗時はログを確認しました。

ログ上で重要だったのは、次の順番です。

Remote - SSH開始
  ↓
Windowsのssh.exeを探索
  ↓
C:\WINDOWS\System32\OpenSSH\ssh.exe を検出
  ↓
OpenSSH_for_Windows_9.5p2 を確認
  ↓
lifebookへSSH接続を開始
  ↓
192.168.11.9:22 がタイムアウト

このため、

Remote - SSH拡張機能そのもの
VS Code Server

より前に、

Windows → LIFEBOOK:22

を確認するべきだと判断できました。

まずPowerShellで切り分ける

接続失敗時は、Windows PowerShellで、

Test-NetConnection 192.168.11.9 -Port 22

を確認できます。

さらに、

ssh lifebook

も試します。

切り分けは次のようになります。

ssh lifebook 成功
  ↓
Remote - SSH側のログ・設定を確認

ssh lifebook 失敗
  ↓
ネットワーク
OpenSSH Server
UFW
電源 / サスペンド
SSH config
などを先に確認

この順番にすると、VS Codeの設定を不要に変更せずに原因を絞り込めます。


切り分けの時系列

今回の作業を時系列でまとめます。

第2回でOpenSSH Server構築
  ↓
公開鍵認証を設定
  ↓
Windows ssh-agentへ鍵を登録
  ↓
SSH configへHost lifebookを登録
  ↓
PowerShell
ssh lifebook
成功
  ↓
Windows版VS Codeを起動
  ↓
Microsoft製Remote - SSHをインストール
  ↓
Ctrl + Shift + P
  ↓
Remote-SSH: Connect to Host...
  ↓
lifebookを選択
  ↓
接続先OSとしてLinuxを選択
  ↓
VS Code Server初期化
  ↓
Connection timed out
  ↓
Remote - SSHログ確認
  ↓
Windows OpenSSH Clientは検出済み
  ↓
192.168.11.9:22へのSSHがタイムアウト
  ↓
LIFEBOOK本体を確認
  ↓
自動サスペンドしていた
  ↓
LIFEBOOKを起こす
  ↓
電源設定を見直す
  ↓
Remote - SSHを再試行
  ↓
SSH: lifebook
  ↓
統合ターミナル
honta@lifebook-ubuntu:~$
  ↓
pwd
/home/honta
  ↓
Remote - SSH接続完了

補足:Windows修復後に接続設定が消えた場合

後日、メインPCのWindows修復後に、

ssh lifebook

が、

ssh: Could not resolve hostname lifebook: ...

となりました。

確認すると、

C:\Users\honta\.ssh

の内容が消えており、

  • LIFEBOOK用秘密鍵
  • config
  • known_hosts

が失われていました。

ssh-agent も、

Stopped / Disabled

へ戻っていました。

ただし、

Test-NetConnection 192.168.11.9 -Port 22

は、

TcpTestSucceeded : True

だったため、LIFEBOOK側のOpenSSHではなく、Windows側SSHクライアント環境の消失と切り分けられました。

新しいEd25519鍵を発行し、LIFEBOOK側の authorized_keys を新しい公開鍵へ更新した後、

ssh-agent
~/.ssh/config

を復旧しました。

最終的に、

ssh lifebook

が再び成功したため、VS Codeから、

Remote-SSH: Connect to Host...
  ↓
lifebook

を選択してRemote - SSH接続も復旧できました。

Remote - SSHは、Windows側のSSH鍵やSSH configを利用します。

OS修復やユーザープロファイルの初期化後にRemote - SSHだけが突然使えなくなった場合は、VS Codeを再インストールする前に ~/.sshssh-agent の状態も確認します。


まとめ

今回は、WindowsのVisual Studio CodeからRemote - SSHを使い、Ubuntu 24.04.4 LTSをインストールした古いLIFEBOOKへ接続しました。

実施した内容は次のとおりです。

  • PowerShellの ssh lifebook で事前接続確認
  • Microsoft製Remote - SSH拡張機能をインストール
  • Remote-SSH: Connect to Host... から lifebook を選択
  • 接続先プラットフォームに Linux を選択
  • リモート側のVS Code Server初期化
  • ステータスバーの SSH: lifebook を確認
  • 統合ターミナルがLIFEBOOK上で動いていることを確認
  • pwd/home/honta になることを確認

また、初回接続では、

ssh: connect to host 192.168.11.9 port 22: Connection timed out

となりましたが、Remote - SSHログを確認して切り分けた結果、原因はLIFEBOOK本体の自動サスペンドでした。

今回特に重要だったのは、

Remote - SSHで失敗
  ↓
VS Code設定をすぐ変更しない
  ↓
Remote - SSHログを確認
  ↓
PowerShellからTCP/22とSSHを確認
  ↓
リモートPC本体・ネットワークを確認

という順番で切り分けたことです。

これで、

Windows
  ↓
VS Code Remote - SSH
  ↓
LIFEBOOK Ubuntu

という開発経路が完成しました。

次回は Docker Engine構築編として、LIFEBOOKへDocker Engine / Docker Composeを導入し、Laravel / Sail等の開発環境を動かすための土台を作っていきます。


参考資料

Visual Studio Code公式:Remote Development using SSH

確認内容:

  • Remote - SSHのインストール
  • 接続前に通常のSSH接続を確認する手順
  • Remote-SSH: Connect to Host...
  • 接続先プラットフォームの選択
  • VS Code Serverのセットアップ
  • ステータスバーによる接続先確認
  • リモート側フォルダ / Workspaceを開く方法
  • リモート統合ターミナル
  • SSH configの利用
  • 公開鍵認証の推奨

公式記載:

Optional: While password-based authentication is supported, we recommend setting up key based authentication for your host.

Visual Studio Code公式:Remote Development Tips and Tricks

確認内容:

  • Remote - SSHのトラブルシュート
  • SSH Clientの検出
  • remote.SSH.path
  • Remote - SSHログの確認
  • SSH configによる接続設定
  • VS Code ServerとSSHトンネル

Visual Studio Code公式:Remote development over SSH

確認内容:

  • Remote - SSH拡張機能
  • ステータスバー
  • 接続前の ssh user@hostname 確認
  • VS Code Serverの初期化
  • リモート統合ターミナル
  • リモートフォルダを開く流れ

関連記事

このシリーズ

あわせて読みたい

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?