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側から読み込むというのがいまいちよくわからない…
後のバージョンによって新しく追加された仕様のようなので昔の一律ユーザーカレントディレクトリにあった頃の記事が検索に引っ掛かって混乱するのもハマリポイントでした…。