[後編]VS Code Remote-SSHでMacからWindows開発機に接続

基礎知識

前回、SSHを利用する基本的なセットアップを完了しました。

今回は公開鍵を共有し、接続設定を保存してパスワード無しで簡単にアクセスできる状態を目指します。

クライアント側のSSH接続の設定改善

前回の手順を参考に、SSHの接続が可能な状態が構築済みの状態からスタートします。

念の為、SSH接続ができることをクライアント側のMacのターミナルで確認します。

ssh ユーザー名@WindowsのIPアドレス

パスワード入力まで進めば、とりあえず接続の問題はありません。

公開鍵の作成と共有

毎回パスワードを入れるのは面倒なため、クライアント側で鍵ペアを作成し公開鍵を共有します。

ssh-keygen -t ed25519
  • ed25519は暗号方式を意味します。これで鍵を作成します。
  • パスフレーズは個人の環境であれば無しでEnterでも構いません、セキュリティを高めたい場合は設定してください。

作成した鍵は、~/.ssh フォルダに保存されます。

一般的には、この後 ssh-copy-id コマンドで公開鍵をサーバー側にコピーしますが、Windowsの追加機能で導入するOpenSSHサーバーでは手順が複雑になります。

Windowsの一般ユーザーであれば~\.ssh\authorized_keysをメモ帳などで開き、Mac側の~/.ssh/id_ed25519.pub の内容をコピーし、Windows側の C:\Users\ユーザー名\.ssh\authorized_keys に貼り付け保存します。

ACLの設定も必要になり、下記の手順で最終的には動作しました。

icacls authorized_keys /inheritance:r
icacls authorized_keys /grant:r "SYSTEM:F" "Administrators:F" "ユーザー:R"

管理者ユーザーの場合は、公開鍵の参照先が異なりconfigファイルの編集も必要になる場合があります。

これで公開鍵をWindows側で保存できたことになりますので、サービスをリスタートします。

Restart-Service sshd

Mac側から接続を試し、パスワード無しでログインできれば成功です

ssh ユーザー名@windowsのIPアドレス

パスワードを聞かれなければ成功です。聞かれる場合は、残念ながら上手く設定できていません。

環境によって対応が異なるため割愛しますが、ChatGPT等に相談しながら進めれば、内容の理解が難しくともコピペで進められるでしょう。

SSH接続設定の保存

更にここまでの設定をクライアント側に保存しておくと、毎回ユーザー名とIPアドレスを入力しなくて済みます。

下記のような内容を ~/.ssh/config に設定を保存しておくと、次回からは簡単に接続できます。

Host win
  HostName 192.168.11.x
  User ユーザー名
  IdentityFile ~/.ssh/id_ed25519

Hostのあとのwin は任意の名前です。覚えやすいものにするとよいでしょう。

ssh win

これでWindows側のターミナルに接続できれば、SSHの利用準備は万端です。

VS Code Remote-SSHを入れる

VS Codeからリモートでの開発を行うには、Remote - SSH 拡張機能(Microsoft製)をインストールします。

インストールはクリックのみで、特に手順は必要ありません。

VS CodeからWindowsに接続

以降の手順は、環境や言語の設定、バージョンで多少異なる場合がありますが、基本的な流れは同じです。

インストール後、Cmd + Shift + P でコマンドパレットを開きます。

Remote-SSH: Connect to Host… を選択し、Add New SSH Host… を選びます。

ここで、事前に準備しておいた ssh ホスト名またはssh ユーザー名@WindowsのIP を入力します。 Hostを登録しておくと、コマンドパレットに自動で一覧が表示され、そこから選択することも可能です。

Windows側でVS Code Serverが自動で起動します。ここで30秒〜1分ほど待つ場合があります。

成功すると、VS Codeの表示が SSH:ホスト名 のようになります。画像は左下の表示部の例です。

あとはいつもと同じ手順でフォルダやファイルを開くだけです。

操作で迷うことはないと思いますが、リモート先のファイルシステムを参照するため、OSのファイルエクスプローラーではなく、VS Codeのコマンドパレットでフォルダを選ぶ形式になります。

VS Code + Remote – SSH をおすすめする理由

リモートで開発を行う場合、OSのファイル共有の仕組みやクラウドストレージを利用する方法もあります。

小規模な開発であれば問題ありませんが、利用には下記のような注意が必要です。

  • 更新頻度の高い.venvフォルダ等の仮想環境や、コンパイルで生じる開発上の中間ファイルがパフォーマンスや同期遅延・競合の問題を起こしやすい。
  • 動画や像ファイルなど、巨大で生成に時間のかかるファイルが回線の影響を受けやすい。
  • リモート接続先のCPU/GPUはほぼ利用しない。

iCloud、OneDrive、Google Driveなどのクラウドストレージの利用は便利で、OSのファイルシステムと同じ扱いができますが、開発に利用する場合は同期の遅延や編集の競合が問題になります。

今回のように、生成AIの出力した画像や動画のみ利用したい場合、VS Codeでのリモート開発は特に有効です。 クロスプラットフォームでの開発に気を使う必要もほとんどなく快適な環境ができあがります。

まとめ

今回の手順で、リモート開発でもほぼシームレスに作業できる環境が整いました。

LAN内であれば通信のオーバーヘッドも小さく、快適に開発できるでしょう。

GUIアプリケーションの開発には向きませんが、生成AIのようにCLIやAPI、またはWebベースのGUIで完結する場合は非常に便利です。

生成AIに関する開発作業はちょっとした待ち時間が多発しますので、これで並行作業が快適にこなせるようになります。

タイトルとURLをコピーしました