はじめに
研究室での開発は、コーディング用Windows機とAI学習用Linux機とにまたがって作業をしています。Visual Studio CodeのRemoteSSHという機能を使うと、SSH越しにコーディングとデバッグができ超便利!でした。

環境
コーディングWindows
・win10 x64
・Visual Studio Code 1.62.3
・執務室のマイデスク横にある。作業性良好。
AI学習Linux
・Ubuntu Linux 20.04 LTS
・NVidia GeForce RTX2080Ti
・サーバ室にあるサーバ機。直接作業すると寒くて凍える。
・Docker version 20.10.5
・hostname: nagatomo.local
環境構築の手順
Linux
docker runしてsshdを実行する
sudo docker run -it -p 8022:22 pytorch/pytorch
apt update ; apt install -y lv vim openssh-server --no-install-recommends
mkdir /var/run/sshd
echo 'root:<password>' | chpasswd #< <password>は適当なパスワードに置き換え。'root:hogehoge'のように。
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
vim /etc/ssh/sshd_config
#<= この行をコメントアウト #PermitRootLogin prohibit-password
/usr/sbin/sshd
#> コンテナ内でSSHデーモンが起動する。デフォルトの22番ポートでListenする。コンテナの外からは8022番ポートからアクセス可能となる。
[sshdの動作確認]
ssh root@localhost whoami
#> <password>をタイプして、root と応答があればOK。
#Linux機にて別のターミナルを起動(=コンテナの外でコマンド実行)。
ssh root@localhost -p 8022 whoami
#=> <password>をタイプして、root と応答があればOK。
windowsからのアクセス
ssh root@nagatomo.local -p 8022 whoami
#=> <password>をタイプして、root と応答があればOK。
エディタで%homepath%/.ssh/config
を作成して以下の内容を貼り付け。
Host container HostName nagatomo.local Port 8022 User root
- VSCodeを起動。
- https://www.server-memo.net/memo/vscode/vscode_ssh.html#i これの「インストール」の項目を実行し、「Remote Development」をVSCodeにインストールする。
- VsCodeの設定を変更し、Linux上のコンテナでPythonのパスが通るようにする:https://qiita.com/hikaruworld@github/items/bbe7718874bf1fa9e940
- VSCodeにて、表示→ビューを開く→リモートエクスプローラー → リモートエクスプローラーのペイン上端のプルダウンメニューにて”SSH Targets ”を選択 → ”container”を右クリックし、ConnectToHostInCurrentWindowを選択。
- 新しいVSCodeのウィンドウが開いてpasswordを聞かれ、<password>を入力する。passwordが通ると、VSCodeのファイルエクスプローラのカレントディレクトリが、Linux機のコンテナのrootユーザのホームディレクトリとなる。
- ファイル→フォルダーを開く でPythonファイルがあるフォルダを開く。またpasswordを聞かれ、<password>を入力する。
- フォルダが開くはず。実行したいPythonファイルをダブルクリックしてエディタ画面に表示させる。
- F5キーを押してデバッグが開始される!Yeah!
日々の運用手順
- Windows
- Containerが増えたら、%homepath%/.ssh/config のHost を追加する必要あり。
- Linux
- コンテナを起動するたびに/usr/sbin/sshdを起動する必要あり。サービス化したいことろ。
その他
- Windows機にてWSL2を使ってコンテナを立てて、そこにVSCodeからSSHしてデバッグする方法は、VSCodeの拡張機能でサクッと可能っぽい。https://www.sun-m.co.jp/blog/tips/414.html
- Windows機とは別のLinux機にてコンテナを立てて、そこにVSCodeからSSHしているのがポイントとなる。
- このページの方法だとコンテナのセキュリティがゆるい。鍵認証方式が安心。
参考サイト
- https://k-hyoda.hatenablog.com/entry/2020/11/29/180943 ContainerへのSSH方法を説明してくれている神サイト!ただし公開鍵認証を使ってパスワード入力なしにログインする方式を採っていて、ちと設定が面倒かも。
- https://www.server-memo.net/memo/vscode/vscode_ssh.html#i VSCodeにRemoteDevelopmentをインストールして物理マシンにアクセスする方法。
コメント