このような投稿が100万件あることを知っていますが、この質問に答える投稿を見つけることができませんでした。
Ubuntu 18.04クライアントからWindows-10 v1903バージョンの組み込みOpenSSH SSHサーバーへのSSH接続を確立しようとしています。私はインターネットドメインを持っていないので、WindowsホストはISPによって割り当てられた外部IPアドレスを使用しているインターネットでのみ表示できます。セキュリティを強化するために、Windows SSHサーバーで公開鍵認証とユーザーパスワード認証を要求したいと思います。また、SSH用の代替ポートを使用するようにWindowsサーバーを構成しました。
Windowsホストでtest_userとしてログインしている間、「ssh-keygen -t ecdsa」コマンドを使用してユーザーキーペア(パスワードを含む)を生成し、それをWindows管理コマンドプロンプトの「test_user_key」ファイルに保存しました。 C:¥Users¥test_user.ssh¥authorized_keysが空で、¥ProgramData¥ssh¥authorized_keysファイルがまったくない場合でも、「ssh-add test_user_key」を使用し、「ssh-add -l」を使用してユーザーを一覧表示していることを確認しました。 !次に、生成されたtest_user_key秘密鍵をUbuntuクライアントの/home/xxx/.sshにコピーし、権限を600に設定しました。
「PubkeyAuthentication yes」と「PasswordAuthentication yes」が構成されているが、「AuthenticationMethods」がコメント化されたWindows SSH Server¥ProgramData¥ssh¥sshd_configを使用して、「ssh -p 15001 -i test_user_key」コマンドを使用してローカルで構成をテストするしました。[Eメール保護]そして、test_userキーのパスワードとtest_userアカウントのパスワードを入力した後、netstatを使用して接続が確立され確認されます。
「AuthenticationMethods publickey,password」を有効にするように Windows sshd_config を再構成し、Windows Server サービスを再起動し、「ssh -p 15001」を使用して接続しようとした場合[Eメール保護]「LinuxからWindowsに切り替えるとすぐに拒否されます(つまり、キーパスワードを入力するように求められません)。」[Eメール保護]:権限が拒否されました(公開鍵)。 「やはり鍵を提供できなかったから。
次に、「ssh -p 15001 -i test_user_key」コマンドを使用して秘密鍵を提供しました。[Eメール保護]「キーのパスワードを求めるメッセージが表示されましたが、同じメッセージを受け取りました。」[Eメール保護]パスワードを入力すると、「権限が拒否されました(公開キー)」というメッセージが表示されます。
問題は、実際のtest_user_key.pubキーが代わりに「test_user@HOSTNAME」で終わるようです。[Eメール保護]。ただし、ホスト名の代わりにIPアドレスを使用してssh-keygenを使用してキーペアを生成する方法はありません。
もちろん、最終的にISPが割り当てた外部IPアドレスを使用してキーペアを作成する必要がありました。しかし...
(1)sshd_configでAuthenticationMethodsを有効にした後、ローカルで接続を確立することもできません。
(2)AuthenticationMethosが無効になっていると、Windowsサーバーは「PubkeyAuthentication」が有効になっていてもキーファイルなしで接続を許可します。
(3)WindowsのAuthorized_keysが空の理由は何ですか?
助ける!
ベストアンサー1
Authorized_keys ファイルが空であるため、公開鍵認証に失敗しました。
公開鍵を追加していないので空です。
cd
まず、Windowsボックスのtest_users .sshディレクトリに追加し、次のコマンドを実行して追加できます。cat id_ecdsa.pub >> authorized_keys
(または何でも人々キーでない場合、ファイル名はです
id_ecdsa.pub
。 いいえ秘密鍵をAuthorized_keysにコピーする)さて、もしSSHクライアントコンピュータにはすでに公開鍵と秘密鍵のペアがあり、authorized_keysファイルに公開鍵を追加できます。これはタスクを実行するより一般的な方法です。クライアントで鍵ペアを生成し、サーバーに公開鍵(および公開鍵のみ)をインストールします。サーバーはクライアントの秘密鍵を知る必要はなく、ほとんどの場合は知る必要はありません。
Windowsホストからクライアントシステムにキーをコピーするときは、公開キーをコピーしますか、秘密キーをコピーしますか?
SSH クライアントシステムには以下が必要です。プライベートコンピュータを使用してリモートSSHDサーバーに認証します。
~/.ssh/
また、ディレクトリ権限があり700
、秘密鍵ファイル権限があることを確認する必要があります600
。最後に、公開鍵の末尾にある名前(「test_user@HOSTNAME」など)は関連性がなく、単にランダムなラベルにすぎません。