390
360

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VSCode公式の機能で、リモートサーバにSSHして編集する【Insiders Preview】

Last updated at Posted at 2019-05-03

Remote Development with Visual Studio Code という機能のプレビュー版がリリースされました。

※以下、本稿の内容は2019年5月3日現在 Insiders版 (要するにベータ版みたいなの)であり、通常バージョンのVSCodeでは動作しません。

VSCode Remote 機能の概要

  • ローカルマシンでは通常通り、VScode本体とUI関連の機能等を動かしている
  • リモートサーバ上のファイルにアクセスして編集できる
  • リモートサーバ上で言語の拡張機能等を実行する
  • リモートとしては「SSH」のほかに「Container」「WSL」が選べる

今までもいくつかサードパーティのリモート編集の拡張機能は存在しましたが、「リモートサーバ上で言語の拡張機能等を実行する」という点が異なる点だと思います。これにより、リモート上の言語実行環境等を使ってローカルで開発できます。

例えば「リモートサーバ上のRubyファイルをVScodeで編集するために、ローカルにもRubyをインストールする」といった事が必要無くなるようです。リモート上のRubyを使ってローカルのVSCodeで開発できるようになります。

環境

以下、下記環境で実際に試してみます。

  • ローカル環境
    • Windows 10 Pro 1809
    • Visual Studio Code 1.34.0-insider
  • リモート環境
    • CentOS Linux release 7.6.1810
    • ※VSCode無し

手順

ここからは実際に、SSH でリモートサーバ上に接続して、リモート上で Ruby 拡張機能を動かしてみます。
だいたい Developing on Remote Machines using SSH and Visual Studio Code に書いてある通りですが。

まず下記から、InsidersビルドのVScodeをインストールします。
https://code.visualstudio.com/insiders/
Insiders buildは、緑色のアイコンが目印です。青色アイコンの安定バージョンVSCodeとは共存できますので、普段安定板を使っていても特に問題はありません。

image.png

次に、Microsoft が提供している Remote Development 拡張機能パックをインストールします。下記コマンドを使うのが早いと思います。

PowerShell
> code-insiders --install-extension ms-vscode-remote.vscode-remote-extensionpack

> code-insiders コマンドを打つか何かして Insiders Build 版の VSCode を起動します。

SSHの設定

SSH 設定は、OpenSSH の ssh_config の記法が利用できます。VSCode のコマンドパレットから >Remote-SSH: Open configuration File を実行すると設定ファイルが開くので、SSH 接続情報を記入しておきます。

たとえば > ssh your.name@your-remote-server.example.com -i C:\Users\your\secret\key\path\.ssh\id_rsa で接続できるサーバの場合、下記のような感じです。

Host your-remote-server
    HostName your-remote-server.example.com
    User your.name
    IdentityFile C:\Users\your\secret\key\path\.ssh\id_rsa

VSCode のコマンドパレットから >Remote-SSH: Connect to Host を実行し、先ほど設定したホスト情報を選択します。

うまくいけば VSCode のウィンドウがもうひとつ開いて、リモート上のファイルが実行可能になります。

リモート上の Ruby Extension を使ってみる

リモートで開いた VSCode Window で、>Extensions: Install Extensions から、Ruby 拡張機能をインストールします。
image.png
インストールボタンが「install on SSH: your-remote-server」となっているのを確認してください。通常は、単にインストールと書かれているだけだと思います。

VSCode を >Developer: Reload Window でリロードして、Open Folder ボタンから適当なフォルダを開き、index.rb みたいな適当なファイルを開いてみましょう。

下記のように、 Ctrl+Space で Ruby の補完がかかれば成功です。
image.png

失敗時は「No Suggestions.」になると思います。実際にリモート接続していない VSCode ウィンドウで試すと下記のようになり、リモート上でしか Ruby 拡張機能が動いていない事が確認できると思います。
image.png

なおインストールされた拡張機能はどこにあるのかというと、リモートサーバのホームディレクトリ以下に .vscode-remote というディレクトリが作成されており、そこに保存されるようでした。

$ ls ~/.vscode-remote/extensions/
rebornix.ruby-0.22.3

まとめ

以上より、ローカルにある VSCode を使ってリモート上の開発をすることができるようになりました。

まだプレビュー版であり、実際どれくらい便利に使えるのか分かりません。あまりにもあっさり動いたので、リモート上で拡張機能がどれくらい機能しているのか、どんな拡張機能でも動くのか、など不明点はあります。(たとえば Ruby 拡張機能でも Language Server 機能はエラーで動いておらず、まだ動かし方は調べていません)
ですが少なくとも VSCode 公式の機能で、リモート上の開発が簡単にできるようになったというのは事実です。

これが実現すれば、ローカルに言語実行環境などをインストールしていない環境下でも、VSCode さえあれば開発ができるようになります。また、初学者や非エンジニアなど開発環境をローカルに構築するのが難しいケースにおいても有効に使えると思います。正式リリースが非常に楽しみです。

Tips

SSHパスワード認証で使うには?

VSCodeの設定でremote.SSH.showLoginTerminalを有効にする事で、パスワードを入力してログインができます。
ただしWindow Reload等のたびにパスワード入力を要求されるため、鍵認証を推奨します。

Insiders Preview版を通常開発に使う事に問題はあるか?

VSCodeのライセンス条項は正式版とInsiders版とで別々になっていますが、Insiders版は「評価目的の利用に限る」ような事はなく、通常の開発に利用することができます。

General. You may use any number of copies of the software to develop and test your applications, including deployment within your internal corporate network.

上記一文は完全に一致しています。

Dockerで使うには?

Remote - Containers 拡張機能を利用します。詳しくは別の方の記事等を参考にしてください。

なお現時点でAlpine Linuxには対応していないようです。GitHubにIssueは立っているため、応援しましょう。
Support Alpine · Issue #54 · microsoft/vscode-remote-release

参考

390
360
1

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
390
360

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?