「Pythonで実装するディープラーニング将棋AI」という本をテキストにして、実際にAIを作ろうと思っている。この本では、実行環境としてGoogle Colabのクラウドを使っており、自分もそれでやろうとしているのだが、長い時間の処理だと途中で接続が切れてしまったり、結局課金が必要な状況に追い込まれたので、ローカルに実行環境を作ろうと考えている。
GPUのコストなど考えると、どっちがいいのかが分からないが、最終目標ではローカルで動作させたいと思っているので、持っている自分のWindowsマシンを使って環境構築を試みた。
だが、Pytorchなどの環境や、使用するコマンドはLinuxで開発されているものが大半で、Windowsには移植されているということもあって、うまくインストールできない場合が多々あり、そこで時間のロスが出てしまうので、Windows上にWSL2でLinux環境を作って、そこでPythonを実行することを考えた。
そして、SSHでその環境にログインしてプログラムを実行するのであるが、なぜログインする必要があるのかという話になってくると、細かい将棋AIにまつわる説明が必要になるので、それは別の機会に説明するとして、今回は表題の方法について説明する。
Windowsには標準でSSHクライアントがインストールされているので、これを使う。
まずは、PowerShellからWSL2の準備を実行
PS C:\Users\username> wsl --install
このコマンド一発で、Ubuntuのインストールまで終了する。
次に、Ubuntuのコンソールを開いて、SSHを初期化する。
最初は ifconfigも入っていないので、その辺のネットワークツールもインストールしておく。
username@HOST:~$ sudo apt install net-tools
username@HOST:~$ sudo apt install openssh-server
username@HOST:~$ sudo systemctl enable ssh
これで、Ubuntu側のsshサーバーが立ち上がる。
WindowsからSSHでログインしてみる。その際のUbuntuのIPアドレスは、ifconfigコマンドで確認しておく。
ここでは、172.16.0.1とする。
PS C:\Users\username> ssh username@172.16.0.1
ここでパスワードを聞いてくる。パスワードを入力すれば、リモートログインが完了する。
しかし、パスワードを聞いてこないようにしないといけないので、PKIを使ってWindows側にキーペアを作成し、Ubuntu側に公開鍵をインストールする。
PS C:\Users\username> ssh-keygen
PS C:\Users\username> cd .ssh
PS C:\Users\username\.ssh> Get-Content id_rsa.pub |Set-Clipboard
これで、公開鍵がクリップボードにコピーできたので、これをUbuntu側にセットする。
.sshというディレクトリを作成して、その中にauthorized_keysというファイルを作成して、先ほどクリップボードにコピーした公開鍵のデータをそのまま入れる。
username@HOST:~$ mkdir -p .ssh
username@HOST:~$ chmod 700 .ssh
username@HOST:~$ cd .ssh
username@HOST:~/.ssh$ vi authorized_keys
username@HOST:~/.ssh$ chmod 600 authorized_keys
viで編集する。insertとして、マウスの右クリックするとペーストされるので、それを保存して完了。
これで、リモートログインがパスワードなしに可能となる。