LinuxのさまざまなフレーバーでOpenSSHを何トンもセットアップしました。しかし、私は一生Windowsで正しく機能することはできません。
問題には二つの側面があるようです。 sshd
/ssh-agent
が使用する権限とキー。
権限
私が読んだすべてのページには、正しい権限に対する異なる答えがあります。一部は機能し、プログラムが不満を示すこともあります。
私が理解しているところによると、すべてのキーはSYSTEM
が所有し、NT SERVICE\sshd
の読み取りアクセス権とAdministrators
とSYSTEM
のフルコントロールを持っている必要があります。 (私が理解しているように、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
の注釈が間違っていると違いが生じますか?すべてのデフォルトキー.pub
をauthorized_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.
server hosts keysとaccount public keysを混在させているようです。
サーバーホストキーは、Win32-OpenSSHによって最初の起動時に%PROGRAMDATA%/ssh
に生成されます。また、適切な権限が付与されているため、変更する必要はありません。これらは、ログに「プライベートホストキー」として読み込まれたキーです。これは、適切なアクセス許可を持っていることも示します(そうでない場合、読み込まれません)。
アカウントの公開キーは%USERPROFILE%/.ssh/authorized_keys
に移動します。そのファイルは、それらが属するアカウントに対してのみ書き込みアクセス権を持っている必要があります。
authorized_keys
ファイルには、アカウントキーペアの公開キー部分を含める必要があります。これは、.pub
の%PROGRAMDATA%/ssh
ファイルとは関係ありません。
authorized_keys
ファイル内のコメントはまったく関係ありません。
authorized_keys
ファイルのキーは、サーバーの起動時に読み込まれません。ログインしようとしたときにのみ読み込まれます。
私のガイドも参照してください:
管理者ユーザーのキーを設定している場合、公開キーを%USERPROFILE%/.ssh/authorized_keys
に配置しても機能しないことに注意してください。代わりに、公開鍵を%PROGRAMDATA%/ssh/administrators_authorized_keys
に追加する必要があります。