おかざきPの記録

Mac, QNAPの設定やプロデューサー業の記録

windowsにOpenSSHサーバを立てた

やったこと

  • windows10の標準機能となったOpenSSHの有効化
  • Windows Subsystem for Linux(WSL)のOpenSSHも使えるようにした
  • VNCMaciPadからwindowsの画面を表示できるようにした

Jupyterサーバとして動く!  ……はず!

環境

ことの始まり

VRゲームに興味があって 比較的上位なGPUを積んだwindows機を購入した.
よくよく考えてみればまともなGPUがあるということは
ディープラーニングも捗ると気付いたため,
windowsにjupyterサーバを立てることにした.
ただ私はmacに慣れきっていてwindowsゴミUIが操作しにくいため,
windowsのjupyterサーバにMacからデータを投げる方針とした.

実作業

PythonやTensorflow,Cudaの導入は特に難しいことはないため省略.
特にTensorflowのドキュメントが非常に分かりやすく素晴らしかった.
microsoftも見習え.
この記事を書いている2020年2月現在,
KerasがPython3.6までにしか対応していない.
このKerasが便利そうなのでPythonのバージョンは3.6をインストールした.

標準のOpenSSH

インストール

一応microsoft分かりにくい公式ドキュメントに全部書いてある.
簡単で間違えようがない方法が分かりにくく平文で書いてあって,
おそらくPowershellを推すために,
とっつきにくい方法をダラダラと丁寧に書いてある.
GUI経由でwindowsの設定からインストールしてしまうのが吉.

初期設定

Powershellでのインストールは何をしているか少し分かりにくい一方で,
ファイアウォールや常駐サービス化の初期設定はPowershellの方が確実.
これら設定をGUIでポチポチ探していくのは私には辛かった…….
ドキュメントのコピペで放っておくとポート22を使用することになってしまうため,
sshd_configでポートを弄った後にでも他の設定を追加しておく.

詳細設定

何故公式はここまでしか載せていないのか.
SSH入れたらまずはsshd_config弄ってポート変更とパスワード認証の禁止をするでしょ.
そしてsshd_configの場所は公式には見当たらない.
というか日本語でこの点を明記してあるページもここ以外見つからない.
こちらの情報をありがたく拝謁すれば,
C:\ProgramData\ssh\sshd_configにあると分かった.
そこで以下の設定を管理者権限で編集する.

  1. #Port 22Port "他と被らないポート"
  2. #PermitRootLogin without-passwordPermitRootLogin forced-commands-only
  3. #MaxAuthTries 6MaxAuthTries 1
  4. #MaxSessions 10MaxAuthSessions 2
  5. #PubkeyAuthentication yesPubkeyAuthentication yes
  6. #PermitEmptyPasswords noPermitEmptyPasswords no
  7. Match Group administratorsの下の AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
    AuthorizedKeysFile .ssh/authorized_keys

特に管理者ユーザで作業している場合,
最後を忘れると鍵認証方式での接続がいつまで経ってもできない
続いて公開鍵の設定.
C:\Users\USERNAME\.ssh\authorized_keysSSHクライアントの公開鍵を記載する.
上で管理者グループの公開鍵の設定を変えなかった場合はそちらにも記載する.
以上の設定をしてからサービスなりコマンドラインなりからOpenSSHを再起動する.
他の端末から鍵認証方式でSSH接続できることが確認できたら
パスワード認証を完全に排除する.
再びsshd_configに戻って
#PasswordAuthentication yesPasswordAuthentication no
としてパスワード認証を禁止してしまう.

WSLのOpenSSH

microsoft storeからUbuntuをインストールすれば後の設定はunix系そのもの.
……ではなかった
wslではパーミッションの基本設定がwindows準拠で通常のunixと異なるため,
ただのubuntuと思って設定するとSSH接続できない

windowsSSH接続してからwslなりubuntuなりbashなりで起動はできる)
wsl上のtmuxを使うつもりのため,一応直接wslに接続できるようにしておく.

パーミッションの設定

おとなしくこちらに従う.
パーミッション既定を変えるファイルにsudo service ssh restartも一緒に仕込んでおけば
windowsを再起動してもこのファイルを実行するだけでsshdパーミッションを戻せる.

OpenSSHの設定

パーミッションさえクリアしていればこのまま
起動が確認できたら/etc/ssh/sshd_config
~/.ssh/authorized_keysを編集してsshdを再起動.

VNCサーバ

Ultra VNCでも入れればよし.
iPadからの接続はJump Desktopが便利.
Macからはfinderで⌘+Kのサーバへ接続でvnc://windowsのip:5900とすれば
windowsのデスクトップが表示できるはず.
MacVNCクライアントをフルスクリーンにすると
magic trackpadのスワイプだけでMacwindowsを切り替えられて便利.

感想

SSHサーバを立てたいまともな人間はwindowsやwslで誤魔化さずに
最初からlinux機を準備しているんだなあと感じるほどまともな情報が見当たらなかった.
出勤中の業務と在宅時のゲーム以外でwindowsを触る機会が減って精神衛生的にいい.
microsoft機械翻訳&たらい回しのクソドキュメントを修正しろ.