1. ホーム
  2. windows

[解決済み] 公開鍵認証によるWindows版OpenSSHのセットアップ

2023-02-27 15:18:32

質問

公開鍵認証を使用した Windows 用 OpenSSH のセットアップに問題があります。

私はローカルのデスクトップ上でこれを動作させ、Unix マシンまたは他の OpenSSH for Windows マシンから鍵を使って ssh することができます。

ビルドをサーバー上に複製しました。パスワード認証は問題なく動作していますが、キーを使用すると、次のような問題が発生します。

debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /cygdrive/c/sshusers/jsadmint2232/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Connection closed by 127.0.0.1

そこで、テストのために、私はローカルホストに SSH してみているだけですが、リモートで試しても同じ問題が発生します。

さらに奇妙なことに、パスワードと公開鍵の両方を有効にしたときに sshd_config でパスワードと公開鍵の両方を有効にした場合、鍵だけを使おうとして、上記のメッセージを出して爆死し、パスワードを使おうともしないことです。

以下は、私が行った手順です。

  1. Windows 用の OpenSSH をインストールします。
  2. mkgroup -l >>..\etc\group (ローカルグループの追加)
  3. mkgroup -d >>..\etc\group (ドメイングループの追加)
  4. mkpasswd -L -u openssh >>..\passwd (私のローカルユーザーを追加)
  5. mkpasswd -D -u jsadmint2232 >>..\passwd (私のドメインユーザーを追加しました)
  6. ファイル内のホームディレクトリを編集 passwd を c:\sshusers%USER% - ここに %USER% はユーザー名です。
  7. パスワード認証を有効にし、キー認証を無効にします。
  8. jsadmint2232 / OpenSSH の両方で SSH 鍵を作成し、ファイルがホームディレクトリに作成されることを確認しました。
  9. 各ユーザーの .ssh ディレクトリに authorized_keys ファイルを追加し、着信接続ユーザーの鍵を追加しました。
  10. net stop opensshd / net start opensshd
  11. パスワード認証がローカルとリモートの両方で機能するかどうかをテストします。
  12. sshd_config を更新し、鍵認証が有効になりました - opensshd を再起動します。
  13. 接続を試したところ、上記のエラーが発生しました。また、パスワード認証も試さない。
  14. sshd_config を更新し、パスワード認証を完全に無効化 - opensshd を再起動します。
  15. 接続をテストしても、上記のエラーが発生します

サーバーが何らかの理由で接続を切断しているようです。

どのように解決するのですか?

問題が解決したのですが...

サービスを開始したアカウントに関連しています。 ローカル システム アカウントを使用していたため、公開キーと authorized_keys ファイルへのアクセスが停止していました。

いったんサービスを停止して、接続しようとしているユーザーとして起動すると、うまくいきました!

つまり、基本的には、サービス アカウントで開始し、外部ユーザーはそのユーザーとして接続する必要があります。