Windows版OpenSSHサーバーセットアップ時の注意点

Windows側へのSSH通信で利用する際に利用する Win32-OpenSSH サーバー は一般的なLinuxシステムのSSHサーバーのセットアップと異なる点があり、ハマりました。

あまり機会がない(ないわけではない)WindowsSSHサーバーのセットアップの度にハマってしまう&あまりセットアップの詳細についての記事も見かけないのでメモも兼ねて記事化します。(githubのwikiに書いてありますけどね…

設定ファイルののディレクトリが C:/ProgramData/ssh

SSHサーバーをインストールしたらまずサーバーの動作設定を行うため sshd_config の場所を探すと思います。

Linuxでは大体 etc/ssh 辺りにあるのですが、 windows版では C:/Program Files…ではなく C:/ProgramData/ssh にあります。 これはWindows版のSSHサーバーがシステムユーザーで実行されることに起因しているようです。 C:/ProgramData は隠しファイル設定なのでエクスプローラー等で見ているとうっかり見逃しやすい点も注意ポイントです。

authorized_keysの名前が administrators_authorized_keys

順当にsshd_configの内容を見ていくと AuthorizedKeysFile の項目でクライアント側の公開鍵情報を管理するのか!と考えがちです。 実際それは正しいのですが、Windows版では管理者権限持ちのみ administrators_authorized_keys のファイルから公開鍵情報を読み込むことになっています。

# 参考例
Match Group administrators
    AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

sshd_configに上記記述がある場合は「管理者権限持ちのアカウントでログインする場合のみこちらのファイルが参照される」ということなので気をつけて下さい。(そもそも管理者権限持ちのみわざわざC:/ProgramData側から読み込むというのがいまいちよくわからない…

後のバージョンによって新しく追加された仕様のようなので昔の一律ユーザーカレントディレクトリにあった頃の記事が検索に引っ掛かって混乱するのもハマリポイントでした…。