はじめに
もはや何番煎じの記事なのか不明ですが、 VS Code Remote Development を使ってみたので備忘録がてらに書くことにしました。この記事では導入自体はサボっている代わりに、2019/08/29 現在、遭遇するかもしれないトラブルについて書いておきます。
VS Code Remote Development って何?
https://code.visualstudio.com/docs/remote/remote-overview
公式サイトは上記の URL にあります。
端的に言えば、リモートサーバにあるディレクトリなどをマウントして、手元の VS Code で編集できるようにする機能です。便利ですね。
私が導入した構成
導入方法
たくさんの方が書かれているので、それらを参考にしましょう。
Visual Studio Codeに超絶便利な Remote Development を入れる
Windows10 VisualStudioCodeでRemote Devlopment
RemoteDevelopment タグで検索すると、いっぱい出てくるので抜粋しました。
トラブルシュート
Windows から踏み台ホストを経由して、接続できない
下記のような SSH config を書いているとします
Host jumpbox
HostName example.edu.cn
User U
Port xxx
IdentityFile xxx.id_rsa
Host remote
HostName remote
User U
Port xx
Windows 版で踏み台ホスト(上記のコンフィグでは jumpbox
)を経由してサーバに接続したい(上記のコンフィグでは remote
)場合、下記のようなエラーが出ることがあります。
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\admin/.ssh/config
debug1: C:\\Users\\admin/ssh/config line 70: Applying options for server*.server.local
debug1: Executing proxy command: exec ssh -W %h:%p jumpbox
CreateProcessW failed error:2
posix_spawn: No such file or directory
そういうときには、.ssh/config
にある ProxyCommand
を下記のように修正すると、うまく動作するようになります。
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe jumphost ssh -W %h:%p jumpbox
参考: https://github.com/microsoft/vscode-remote-release/issues/18#issuecomment-500713684
接続先サーバが Proxy を設定しないとインターネット外部に出ていけない環境にある
どういうことかというと、Remote Development の仕組み上、接続先サーバがインターネットにアクセスできるようにする必要があります。
挙動しか見ていないので、ざっくりですが、Remote Development では SSH で対象サーバに接続した後に、 vscode-server
というプログラムを(おそらく)ホームディレクトリ以下にダウンロードして実行する仕組みになっています。
対象サーバ上で、 vscode-server
を立ち上げて、クライアント(Windows etc)側から接続するって、 X Server っぽいですね。なんとなく。(接続の仕方は逆方向ですけど)
という構造がわかれば、勘の鋭い方はお気づきかもしれません。接続先サーバの自分のユーザの環境変数に下記を設定する必要があります。/home/username/.bashrcなど
export http_proxy=<Your proxy server ip and port>
export https_proxy=<Your proxy server ip and port>
または、内部で wget を利用しているので、 .wgetrc
に書くのもアリですね。
参考: https://github.com/microsoft/vscode-remote-release/issues/898
Unauthorized client refused. というエラーが出る
接続先サーバのディストリビューションのバージョンが低いと遭遇するかもしれません。
(正確には libstdc++ が古いとなるんですけど)
そのときには下記のようなエラーが出ます
Failed to connect to the remote extension host server (Error: Connection error: Unauthorized client refused.)
対象サーバ上にある /home/username/.vscode-server
ディレクトリ配下にある .<適当なID>.log
ファイルに下記のようなメッセージが出ていたら、まさしく該当しています
Error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /root/.vscode-remote/in/473af338e1bd9ad4d9853933da1cd9d5d9e07dc9/node_modules/spdlog/build/Release/spdlog.node)
参考: https://github.com/microsoft/vscode-remote-release/issues/103
まとまらないまとめ
他の方が該当しそうなトラブルと対処法を書いてみました。
今まではサーバ上で vim でガリガリと書いていたのですが、手元では VSCode で書いていたので、エディタが統一できるのは嬉しい限りです。
とはいえ、上記のトラブルの通り、ディストリが古かったりすると導入できなかったりするので、 vim
と使い分けて快適に過ごしていきたいと思います。( ・ㅂ・)و ̑̑