#目的
VSCodeのRemoteDevelopment機能を利用すると、SSHで接続したサーバ内のファイルをSSHクライアント側のVSCodeで編集できるらしい。
ホストOSのWin10は綺麗なままで、ゲストOSにAnacondaなどインストールし開発できるかトライしたく、まずはVSCodeでの接続にチャレンジ。
- Windows10: ホストOS。SSHクライアント。
- Ubuntu19.04: Win10のHyper-V上に建てたゲストOS。SSHサーバ。
参考にしたのは下記ページ
https://blog.masahiko.info/entry/2019/06/15/202003
#Windows10でのSSH
Win10 1803より標準機能としてOpenSSHが利用できるようになったとのこと。
Hyper-V上のUbuntuにSSH接続し、VSCodeでリモート開発するためにまずはOpenSSHで環境準備をする。
#SSHサーバの設定
UbuntuにしろWin10(1803以降)にしろ、デフォルトでSSHクライアントとしての機能は有効化されていることが多いが、SSHサーバ機能は自身でインストールが必要である。
今回はUbuntuをSSHサーバとするため、下記コマンドを投入。
$sudo apt-get install openssh-server
#OpenSSHでの鍵生成
Win10 1803以降ではOpenSSHが標準機能として利用できるようになっている。
PowerShellで以下コマンドを投げ、鍵ペアを生成する。
PS C:\Users\hoge> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\hoge/.ssh/id_rsa): [未入力EnterでOK, 多分鍵名を指定する部分]
Created directory 'C:\Users\hoge/.ssh'.
Enter passphrase (empty for no passphrase): [秘密鍵にパスフレーズを設定する]
Enter same passphrase again: [もう一度パスフレーズを投入]
Your identification has been saved in C:\Users\hoge/.ssh/id_rsa.
Your public key has been saved in C:\Users\hoge/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:[ハッシュ値が表示される] hoge@DESKTOP-XXXX
The key's randomart image is:
#SSHサーバへの鍵の転送
PowerShellへのコマンドを投げ、SSHクライアント(Win10)からSSHサーバ(Ubuntu)へ公開鍵id_rsa.hoge
を送る。
PS C:\Users\hoge> scp C:\Users\hoge\.ssh\id_rsa.pub hoge@[SSHサーバのIPアドレス]:~/.ssh/authorized_keys
#configファイルの作成
上記の手順で%USERPROFILE%配下にフォルダ.ssh
が生成されているはず。C:\Users\hoge\.ssh\config
というファイルを作成する。
Host [任意の名前]
HostName [接続先SSHサーバのIPアドレス]
User [SSHサーバにログインするためのユーザ]
IdentityFile C:\Users\hoge\.ssh\id_rsa #秘密鍵のパス
#ポート番号は指定しなくても接続できた。
#VSCode-Insidersのインストール
2019.08時点ではSSH開発機能Remote Developmentは、インサイダー版でしか利用できないとのこと。そのためVSCode-Insidersをインストールする。安定版と共存可能なので安心。(インサイダー版はアイコンが緑!)
https://code.visualstudio.com/insiders/
※補足
一応、安定版VSCode Ver1.36以降でも対応しているらしいが、接続の際の挙動が不安定のため(何回も秘密鍵のパスフレーズを求められたり)、インサイダー版を紹介。
#Remote Developmentの設定
VSCode-InsidersのExtensions(Ctrl+Shift+X)
でRemote Development
と検索し、拡張機能をインストール。
Remote Developmentをインストールすると下記機能がすべて使えるようになる(らしい)。
- Remote-SSH
- Remote-Containers
- Remote-WSL
#VSCode-Insiders, 最大の罠
VSCode-Insidersの設定(Ctrl+,)
でRemote SSH
で検索。
以下設定にチェックを入れる。
Remote.SSH: Show Login Terminal
Always reveal the SSH login >terminal
秘密鍵にパスフレーズを設定している場合、このチェックが無いとうまくいかないとどこかで読んだ気がするがあまり覚えていない。
#Remote-SSH接続
準備は完了したので、VSCodeサイドバーからRemote-SSH
を選択する。configファイルに書き込んでいるホスト名が表示されているはずなので接続する。
別ウィンドウが立ち上がってくるので、秘密鍵のパスフレーズを入力、さらにUbuntuユーザのログインパスワードを入力することで接続完了。
#まとめ
とりあえずVSCodeでの接続はうまくいった。今後はゲストOS側にAnacondaなどをインストールし、ホストOS側からちゃんと動かせるかを確認していきたい。
これができれば最終的には、持ち出し用の軽いPCから使い慣れたエディタで家のサーバをいじれるのでは!など夢が広がる~。