web-dev-qa-db-ja.com

Windows 10 OpenSSHサーバーでのSSHキーの設定

LinuxのさまざまなフレーバーでOpenSSHを何トンもセットアップしました。しかし、私は一生Windowsで正しく機能することはできません。

問題には二つの側面があるようです。 sshd/ssh-agentが使用する権限とキー。

権限

私が読んだすべてのページには、正しい権限に対する異なる答えがあります。一部は機能し、プログラムが不満を示すこともあります。

私が理解しているところによると、すべてのキーはSYSTEMが所有し、NT SERVICE\sshdの読み取りアクセス権とAdministratorsSYSTEMのフルコントロールを持っている必要があります。 (私が理解しているように、SYSTEMおよびAdministratorsはWindowsのルートを表します)。 ssh-add/ssh-agentを使用しない場合にのみ、読み取りアクセス権が必要であることをドキュメントで読みました。 %USERPROFILE%/.ssh/authorized_keysファイルにも同じ権限を構成し、.pubを使用して、接続の試行に使用しているEd25519キーを追加しましたが、独自に生成したRSAでも試行しましたキー。

このように権限を設定すると、エージェントにキーを追加したり、デーモンを実行したりするときに、プログラムは問題を報告しません。 sshd_configで変更した唯一のオプションは0.0.0.0にバインドしていたListenAddressです。SSHはローカルでのみ使用されるため、マシンのローカルIPに設定しました。

キー

sshd.exeオプションを指定して-dを実行すると、%PROGRAMDATA%/sshから4つのデフォルトキーがインポートされます。 ed25519.pubキーをauthorized_keysに追加すると、HOSTNAME@workstation@HOSTNAMEが続き、HOSTNAMEが私のPCのホスト名になります。通常はuser@Hostが表示されるはずです。独自のキーを作成して追加しようとしましたが、sshd.exe -dを実行すると、デフォルトのキー以外は使用されないようです。

結局、OpenSSHサーバーに接続できず、%PROGRAMDATA%/ssh/Logsのログはサーバーの起動を示しているようです。私の質問を要約すると:キーファイルとauthorized_hostsの正しい権限は何ですか? authorized_keysの注釈が間違っていると違いが生じますか?すべてのデフォルトキー.pubauthorized_hostsに追加する必要がありますか?そして最後に、起動時にこれらのキーについて言及する場合のsshdの意味(ログを参照)? authorized_hostsに追加する限り、自分で生成したキーは機能しないのですか?

debug1: sshd version OpenSSH_for_Windows_7.6, LibreSSL 2.6.4
debug1: private Host key #0: ssh-rsa SHA256:and12LVkEqyXJ2gr0SxFEQObaSFF+Czlcnx2uFjZaJQ
debug1: private Host key #1: ssh-dss SHA256:waeLdy4Sm3NT+zbwEMIhbfl8TLe6WeQ0MuZE07CzFQU
debug1: private Host key #2: ecdsa-sha2-nistp256 SHA256:G8/7y/04cSE3EezTrcmpK4lRmJ5f5I/CDPcHaPzsv4o
debug1: private Host key #3: ssh-ed25519 SHA256:Jvn9UjsbdzH54L/yvGYGfCzJQVIMiIWL5RETbaL2ACA
debug1: rexec_argv[0]='C:\\WINDOWS\\System32\\OpenSSH\\sshd.exe'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on 192.168.1.144.
Server listening on 192.168.1.144 port 22.
4
shenk

server hosts keysaccount public keysを混在させているようです。


サーバーホストキーは、Win32-OpenSSHによって最初の起動時に%PROGRAMDATA%/sshに生成されます。また、適切な権限が付与されているため、変更する必要はありません。これらは、ログに「プライベートホストキー」として読み込まれたキーです。これは、適切なアクセス許可を持っていることも示します(そうでない場合、読み込まれません)。


アカウントの公開キー%USERPROFILE%/.ssh/authorized_keysに移動します。そのファイルは、それらが属するアカウントに対してのみ書き込みアクセス権を持っている必要があります。

authorized_keysファイルには、アカウントキーペアの公開キー部分を含める必要があります。これは、.pub%PROGRAMDATA%/sshファイルとは関係ありません。

authorized_keysファイル内のコメントはまったく関係ありません。

authorized_keysファイルのキーは、サーバーの起動時に読み込まれません。ログインしようとしたときにのみ読み込まれます。

私のガイドも参照してください:

9
Martin Prikryl

管理者ユーザーのキーを設定している場合、公開キーを%USERPROFILE%/.ssh/authorized_keysに配置しても機能しないことに注意してください。代わりに、公開鍵を%PROGRAMDATA%/ssh/administrators_authorized_keysに追加する必要があります。

ソース

2
Utku