家のGPUマシンにVPSとポートフォワーディングを使用してリモートアクセス + リモート上のdockerコンテナにVSCodeでアタッチ
環境
ポートフォワーディングの設定
とりあえず家のGPUマシンにssh接続できるようにする。参考リンクを参考にすればできる。
ネットワークの知識がホットミルクの膜くらい薄い僕が、リモートアクセスしたという話|森田 拓朗|note
SSHポートフォワード(トンネリング)を使って、遠隔地からLAN内のコンピュータにログインする - 2014-09-12 - ククログ
VPSを経由して安全に自宅サーバを公開する - Qiita
GPUマシン側で以下を実行
vps_usernameはVPS上のubuntuユーザ名、vps_addressはVPSのグローバルIP、192.168.xx.yyはGPUマシンのローカルIPを設定する。
ssh <vps_username>@<vps_address>-R 10022:192.168.xx.yy:22
ssh接続はしばらくするとタイムアウトするので適宜設定する。めんどくさかったらtopを実行しておけば切れない。
vpsのsshポートがデフォルトじゃない場合は適宜修正。
クライアント側からアクセス
ssh <vps_username>@<vps_address> ssh <gpu_username>@localhost -p 10022
これでアクセスできる!
dockerコンテナへアタッチ
VSCodeのremote developmentでdockerコンテナにアタッチしたいが、ポートフォワーディングしているせいか?うまくできなかった。
単純にsshしているリモートマシンで動作しているdockerコンテナへのアタッチは特に何の設定もせずにできるが、よくわからなかったので以下の方法を参考にした。
※ローカルマシン側にdocker環境をいれておかないとそもそもVSCodeのdocker remote developmentが使えないのでいれておく。
リモートサーバーの中のDockerにローカルから接続する - Eospedia
ssh -fNL localhost:23750:/var/run/docker.sock <gpu_username>@tokyogpu export DOCKER_HOST=localhost:23750 code
とりあえずこれで直接アタッチできるようになった。
よくわからなかった部分をいつか理解したいが・・