今時の Windowsは標準で sshを持っていて、さらにはオプションで sshdもインストール可能なのね。
sshdのインストール自体は簡単なので良いとして、公開鍵認証を有効にするのにはまったのでメモを。
C:\Windows\System32\OpenSSH\に色々入っていて、sshd_config_defaultもあったので sshd_configにコピーして PubkeyAuthentication を Yesに変更して sshdを再起動…んーむ、認証が有効にならない。
結局、半日ぐらい悩んだ末に C:\ProgramData\ssh\sshd_configを発見して変更…駄目だな。
PasswordAuthentication noの設定が反映される事からすると sshd_config自体はこれでいいはずなので authorized_keysが問題なのかなぁ?
色々調べた挙げ句、sshd_config中の administrators_authorized_keysを指定している二行をコメントアウトすることで解決。
OpenSSH-Win64に含まれるスクリプトの実行も重要。
powershell -ExecutionPolicy Bypass -File FixHostFilePermissions.ps1
powershell -ExecutionPolicy Bypass -File FixUserFilePermissions.ps1
Tera Termで繋げようとすると「現在のステージでは想定外のSSH2 メッセージ(80) です. (6)」というエラーになるのは Tera Termのバージョンアップで解消。
最終的には sshd_config中の administrators_authorized_keys関連を元に戻し、通るようになった authorized_keys*1 を C:\ProgramData\ssh\administrators_authorized_keysに移動して完了。
*1 件のスクリプトで「セキュリティの継承はしない」「SYSTEMとAdministratorsのフルアクセスのみ」に変更されている。