【VSCode】MacからWinへSSHで接続して開発する

2020年10月31日Mac,Windows,環境構築

こんにちは、しきゆらです。
今回は、MacからWinへSSH接続してWinにあるスクリプトを編集したい場面があったので、タイトル通りVSCodeを使って環境をつくってみたのでメモしておきます。

これまでWinで開発というとPowerShellとかWinでしか動かないもの以外はあまりやってきていませんでした。
最近はWSLやWindows Terminalの登場により便利にはなりつつありますが、メインはどうしてもMacでやってしまいます。
今回も、PowerShellを書く必要があったのでしょうがなくWinでポチポチしていましたが、キーボードやマウスの操作にイライラしたので、Mac側でWinにアクセスできないかと思って調べたら、意外と簡単にできたのでやってみました。

なお、接続先のWinPCにはWSL2が動いていることが前提となります。
環境がない場合は「【Win/WSL】Windowsで開発環境を整える」あたりを参考に作っておいてください。


接続されるWin側の準備

まずは、WinにOpenSSHサーバを準備していきます。
これは、外部のものを入れなくても、設定から「オプション機能」から追加できます。
なお、「インストールされている機能」の中に「OpenSSHサーバ」が入っていれば大丈夫です。

入っていない場合は、「機能の追加」からOpenSSHサーバを選んでインストールするだけ。
とても簡単ですね。

インストール後、管理者権限でPowerShellを起動して以下のコマンドでSSHサービスを起動しておきます。

$ Start-Service sshd

合わせて、SSH接続時のデフォルトシェルをbashに変更しておきます。

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" -PropertyType String -Force

エラーなく終了すれば準備完了です。
テストとしてssh localhostなどどこか別サーバへアクセスできるようになっていればOK。

接続時は、Winへアクセスするためにホスト名が必要になるので確認しておきます。
私の場合は、LAN内にあるPCだったのでIPアドレスを確認しておきました。

ipconfig

接続するMac側の準備

MacからWinへの接続確認

Mac側から、Winへ向けてSSHでアクセスできるかを確認します。

$ ssh username@xxx.xxx.xxx.xxx

無事接続できたでしょうか。
これでうまく接続できていれば、あとはVSCode側でごにょごにょするだけです。

私は、はじめアクセスするときにWin機のPC名をホスト名にしておりうまく接続できずワタワタしていました。
よく考えれば、そんなの外側からは分からないのでIPで指定してあげて事なきを得ました。

VSCodeの準備

VSCodeの拡張機能から「Remote Development」をインストールします。
こいつは、いくつかの拡張機能が組み合わさっているものなので、「Remote – SSH」だけでもいいかもしれません。

※画像はWinのVSCodeからですが、Macでも同じはず・・・

インストールが終わったら、コマンドパレットから「Remote SSH: Connect to Host …」を選択し「Add New SSHHost …」を選択。
SSH接続先を聞かれるので、「ssh username@xxx.xxx.xxx.xxx」と入力してあげればOK。
なお、こいつはMac内の「~/.ssh/config」を見ているようなので、間違えた場合は接続先の情報を修正しておくとよいかと思います。

MacのVSCodeからWinへ接続してみる

では、実際にVSCodeからSSH接続してみます。
先ほどのコマンドパレットから「Remote SSH:Connect to Host..」から接続先を選択してエンター。
初回起動時は、若干時間がかかります。

接続出来たら、開きたいフォルダを指定してあげましょう。
無事接続できていれば、見えているフォルダはWin(というかWSLから見たWin)側のものが見えているはず。
これにて、必要なところを開いてポチポチ書いていけばOK。

意外と簡単にできてしまいました。

まとめ

今回はVSCodeを使って、MacからWinへSSHで接続してWin側のファイルを変更する方法をメモしました。
準備も簡単だし、特に遅延や接続が途切れることもなくローカルのファイルを操作いているのとそん色ないくらいには動いてくれる印象でした。
今回はLAN内のPCでやってみましたが別のところにあるPC(例えばお家から社内にあるPC、など)へ向けて行えばさらに便利かもしれません。

というかWinさん、デフォルトでは入っていないけど有効化すれば使える機能が意外と多いのと
挙動は違いますがLinuxやMacで使っているコマンドがPowerShellでも使えるようになっていることに驚きました。
これとは別にssh-keygenなどもPowerShellからできることを知り、PuTTYなど外部ツールを使わずにある程度のことはできるんだなぁ、いい世界になったなぁと

今回は、ここまで。
おしまい。

Posted by しきゆら