自分のブログ( https://saino.me/2019/08/29/post-1151/ ) からの転記です。
はじめに
もはや何番煎じの記事なのか不明ですが、 VS Code Remote Development を使ってみたので、備忘録がてらに書くことにしました。この記事では導入自体はサボっている代わりに、2019/08/29 現在、遭遇するかもしれないトラブルについて書いておきます。
VS Code Remote Development って何?
公式サイトは上記の URL にあります。
端的に言えば、リモートサーバにあるディレクトリ配下を、手元の VS Code で編集できるようにする機能です。便利ですね。
私が導入した構成
- クライアント側: Windows 10 + VSCode
- サーバ側: Linux (CentOS 7 や Ubuntu etc)
導入方法
たくさんの方が書かれているので、それらを参考にしましょう。
Visual Studio Codeに超絶便利な Remote Development を入れる
Windows10 VisualStudioCodeでRemote Devlopment
Qiita 内の 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
ProxyCommand ssh -W %h:%p jumpbox
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 っぽいですね。なんとなく。(接続の仕方は逆方向ですけど)
という構造がわかれば、勘の鋭い方はお気づきかもしれません。接続先サーバの自分のユーザの環境変数に下記を設定する必要があります。
export http_proxy=<Your proxy server ip and port>
export https_proxy=<Your proxy server ip and port>
または、 vscode-server
のダウンロードには 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
と使い分けて快適に過ごしていきたいと思います。( ・ㅂ・)و ̑̑