「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として、マウスの右クリックするとペーストされるので、それを保存して完了。

これで、リモートログインがパスワードなしに可能となる。