Edited at

sshfs(+docker)を使ってリモートマシン上のコードをGUI系エディタでいじる


はじめに

AWSやAzureで(お金さえあれば)潤沢なGPU環境を簡単に利用できるようになりましたが、リモートマシンゆえにGUIの利用に制限がかかります。

XForwardingなどがうまく動けばよいですが、重くて使い物にならないことも多いかと思います。

そこで本記事では、リモートマシン上にあるコードをローカルのGUI系エディタ(VSCodeなど)でいじる方法を紹介します。

本番実行はリモートマシン上で行う想定ですが、ローカルでも簡単なデバッグは行いたいので、dockerを使ってリモートとローカルの環境を揃えます(オプションです)。


代替手段

・XForwading

重い

・Remote VSCode

余計なポートを開ける必要があり、会社で使えない(´・ω・`)


主な流れ


  1. ローカルとリモートの両方でdockerコンテナに入る

  2. ローカルでsshfsし、リモートマシンのディレクトリをマウント

  3. ローカルでコーディング


docker

ローカルとリモートの両方でdockerコンテナに入ります。

docker runする際に、--privilegedオプションをつけてください。

これが無いと後述のsshfsでエラーが出ます。

https://github.com/s3fs-fuse/s3fs-fuse/issues/647

なお、dockerコンテナ内でVSCodeを利用する方法については以下の記事を参考にしてください。

https://qiita.com/kanosawa/items/0c83f8d8eaaa4a72e1cd


sshfs

ローカルでsshfsし、リモートマシンのディレクトリ(src)をローカルマシンのディレクトリ(dst)にマウントします。

sshfs [-o IdentityFile=keypath] username@remote_ip:src dst

例)

sshfs -o IdentityFile=~/key.pem ubuntu@12.345.678.901:/home/ubuntu/work ~/work

鍵認証不要なら[]部は不要です。


おわりに

以上の手順で、リモートマシン上にあるコードをローカルのGUI系エディタでいじることができるようになります。

これでTesla V100 8台を気軽にぶん回すこともできますね(24.5ドル/hなり)