Windows Server 2019以降はOpenSSH ServerがOSの機能として搭載されるようになりました。
AWS EC2上のWindows Serverに接続するときに軽くはまったので、設定のコツをメモとして残すことにします。
環境
・サーバー:Windows Server 2019 Base(AWS EC2)
・sshクライアント:RLogin 2.27.2
基本の設定
インストール、公開鍵の設定などは以下の記事を参考にしました。
sshd_config
上の記事でも触れられていますが、sshd_configの以下2行をコメントアウトしないと接続できません。
(Web上でも様々なところで「無効化すべし」と書かれています。)
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
C:\ProgramData\ssh\administrators_authorized_keys
にファイルを置けば
良さそうな気もしますが、確かに接続できません。
PS C:\Windows\system32> Invoke-WebRequest -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key -OutFile C:\ProgramData\ssh\administrators_authorized_keys
なぜコメントアウトが必要か
設定の意味としては「Administratorグループの時は、administrators_authorized_keysを参照する」なので
特に問題はなさそうです。
(「administratorsが有効なのは英語版Windowsだけ!その他の言語だとS-1-5-32-544
に変換されちゃう」
といったWebサイトもありましたが、「Match Group S-1-5-32-544」にしても変わらず)
答えはMicrosoftのページに書いてありました。
administrators_authorized_keysファイルのアクセス権を修正する必要があるそうです。
実際にやってみる
コメントアウトを外してから以下のコマンドたちを実行していきます。
【変更前の権限確認】
PS C:\Windows\system32> icacls "C:\ProgramData\ssh\administrators_authorized_keys"
C:\ProgramData\ssh\administrators_authorized_keys NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
NT AUTHORITY\Authenticated Users:(I)(RX)
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
【権限変更】
PS C:\Windows\system32> icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
処理ファイル: C:\ProgramData\ssh\administrators_authorized_keys
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
【変更後の権限確認】
PS C:\Windows\system32> icacls "C:\ProgramData\ssh\administrators_authorized_keys"
C:\ProgramData\ssh\administrators_authorized_keys NT AUTHORITY\SYSTEM:(F)
BUILTIN\Administrators:(F)
1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
【サービス再起動】
Restart-Service sshd
アクセス権修正後、接続することができました!
Microsoft Windows [Version 10.0.17763.4010]
(c) 2018 Microsoft Corporation. All rights reserved.
administrator@EC2AMAZ-G7LO20S C:\Users\Administrator>
理由が分からないままコメントアウトが嫌だったので調べてみましたが、
デフォルトのまま接続できるようになったので、スッキリしました。
嫌らしいことにこのアクセス権については、日本語ページには書いてないんですよね。。。
(Microsoftあるあるですが)