公開鍵認証を使用して、OpenSSH for Windowsのセットアップに問題があります。
私はこれをローカルデスクトップで動作させ、UnixマシンまたはWindowsマシン用の他のOpenSSHのキーを使用して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
そのため、テストの目的のために、localhostにSSHで接続しようとしていますが、リモートで試行しても同じ問題が発生します。
さらに奇妙なことに、パスワードと公開キーの両方をsshd_config
、キーの使用のみを試みてから上記のメッセージで爆破し、パスワードの使用も試みません。
私が行ったステップは次のとおりです。
サーバーが何らかの理由で接続を切断しているようです。
私は問題を解決しました...
これは、サービスを開始したアカウント(ローカルシステムアカウントを使用していたアカウント)に関連しています。これは、pubキーとauthorized_keysファイルへのアクセスを停止していました。
サービスを停止し、接続しようとしているユーザーとして開始すると、機能しました!
したがって、基本的には、サービスアカウントで開始し、外部ユーザーがそのユーザーとして接続する必要があります。
以下は、Windows 10 v.1803に同梱されているOpenSSHのセットアップ手順です(2018年4月の更新。この投稿へのコメントを参照してください。1809では動作しない可能性があります)。
サーバーのセットアップ(昇格されたPowerShell):
OpenSSHサーバーをインストールします:Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
。
エージェントおよびsshdサービスを開始します:Start-Service ssh-agent; Start-Service sshd
(これにより、$env:ProgramData\ssh
でホストキーとデフォルト構成が自動的に生成されます)。
[オプション] OpenSSHUtils PowerShellモジュールをインストールします:Install-Module -Force OpenSSHUtils
クライアントのセットアップ(昇格されていないPowerShell):
ユーザーキーを生成:cd $env:USERPROFILE\.ssh; ssh-keygen.exe
、プロンプトに従い、デフォルトの推奨ファイルの場所に同意します。これにより、2つのファイルが作成されます:id_rsa
およびid_rsa.pub
;
[オプション]認証エージェントにキーを追加して、使用するたびにパスワードを入力する必要がないようにします。ssh-add .\id_rsa
(または生成されたファイル);
サーバーのセットアップは続行されました(非昇格のPowerShell):
cd $env:USERPROFILE; mkdir .ssh; cd .ssh; New-Item authorized_keys
;id_rsa.pub
ファイルの内容を前のステップからの.ssh\authorized_keys
ファイルに貼り付けます。start .
を実行して、現在のフォルダー($env:USERPROFILE\.ssh
)でエクスプローラーを開きます。authorized_keys
を右クリックして、Properties -> Security -> Advanced
に移動しますSYSTEM
と自分以外のファイルのすべての許可を削除します。ファイルには正確に2つのアクセス許可エントリが必要です。一部のガイドでは、Repair-AuthorizedKeyPermission $env:USERPROFILE\.ssh\authorized_keys
の実行が推奨されています。これにより、sshd
ユーザーが権限リストに追加され、willbreak認証のため、そうしないでください。少なくともsshd
ユーザーの追加に同意しないでください)。 SYSTEM
と自分の両方がファイルを完全に制御できるはずです。クライアント:
ssh <serverusername>@<serverhostname>
を実行します。この時点で動作するはずです。サーバーとしてWindows 10を使用し、それ自体とクライアントとしてDebian Linuxの両方で試してみました。
編集:(以下のコメントセクションを参照)現在のウィンドウビルドでは、以下のコメントもコメントアウトする必要があります
PS C:\ProgramData\ssh> bash -c 'vim sshd_config'
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Mls-software.comのOpenSSHバージョンを使用している場合は、別の注意事項があります。
SSHD_SERVERアカウントと特権分離を使用してインストールする場合、公開キー認証を使用できます( http://www.mls-software.com/opensshd-pki.html を使用)。ただし、UACが有効な場合、インストールは成功しません。ユーザーは適切に作成されず、サービスは作成されません。事実の後にこれらのアイテムを手動で起動しようとすることは非常に困難です。インストール前にUACを無効にするだけで、インストールプロセスでユーザーとサービスを適切に作成できます。インストール後、UACを再度有効にすることができます。
パスワード認証を使用している場合、SSHD_SERVERアカウントを手動で作成すると認証は成功しますが、クライアントは「/ bin/bash:Operation not allowed」で接続を終了します。公開鍵による認証はサーバーによって閉じられました(元のエラーはCambolieによって投稿されました)。
私はそれを解決しました: