web-dev-qa-db-ja.com

SSH公開鍵-サポートされる認証方法はありません(サーバーは公開鍵を送信しました)

ネットワークがブリッジに設定された仮想マシンに12.10サーバーがセットアップされています(基本的に、スイッチに接続されたコンピューターとして表示されます)。

apt-get経由でopensshdをインストールし、PuTTYを使用してユーザー名とパスワードを使用してサーバーに接続できました。

次に、公開/秘密キー認証を使用するように設定しました。私は次のことをしました:

  1. PuttyGenを使用してキーを生成しました。
  2. 公開キーを/etc/ssh/myusername/authorized_keysに移動しました(暗号化されたホームディレクトリを使用しています)。
  3. sshd_configを次のように設定します。

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

PuTTYまたはWinSCPを使用して接続すると、サポートされている認証方法がありません(サーバーから公開キーが送信されました)というエラーが表示されます。

sshdをデバッグモードで実行すると、次のように表示されます。

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

なぜこれが起こっているのですか、どうすれば修正できますか?

78
F21

問題が解決しました:

公開鍵ファイルに問題があったようです。 PuttyGenは、次のような公開鍵ファイルを作成します。

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

ただし、これは機能しないため、PuttyGenでキーを開き、そこからコピーする必要があります(これにより、キーは正しい形式で1行になります)。

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

これをauthorized_keysに貼り付ければ、動作するはずです。

70
F21
  1. /etc/ssh/sshd_configファイルを編集します。
  2. PasswordAuthenticationおよびChallengeResponseAuthenticationyesに変更します。

3a。 ssh /etc/init.d/ssh restartを再起動します。
または
3b。 service sshd restartを使用した方が良い

17
Hunter

私が抱えていた頭痛の種を誰かが助けてくれることを願っています。 F21では、ファイルを保存する代わりにPuTTYGenウィンドウからキーをコピーする必要がありますが、コピー後、貼り付け方法はキーが機能するかどうかに大きな影響を与える可能性があります。一部のエディターは、貼り付け時にテキストを変更したり、改行を使用したり、authorized_keysファイルを無効にしたりします。

壊れる可能性が最も低いとわかったのは、文字列全体をエコーし​​、出力をファイルにリダイレクトすることです。 PuTTYを右クリックしてキー文字列をコマンドラインに貼り付けると、次のようになります(上記の例を使用)。

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

これで終わります:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

この方法の別の利点は、上書きするために>ではなく>>を使用してこの方法で複数のキーを追加できることです。次に例を示します。

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

それが誰かを助けることを願っています。

9
Dave

すでに正しいタイプのキー(pemではなくppk)を使用していました。

私たちのケースでは、サーバーのユーザーフォルダーのauthorized_keysのファイルパーミッションに問題がありました。 -rw-r--r--でなければなりません... -rw-rw-r--でした

sshはファイルのパーマについて非常に細心の注意を払っています。

8
Sharad

私の場合、理由は、PuTTY認証エージェント、つまりPageantで秘密鍵ファイル(.ppk)が削除されていたためです。そこで再びPageantに更新しましたが、その後接続は完全に機能しました。

5
Marko H

解決済み:

  1. PuttyGENをダウンロードし、公開鍵と秘密鍵を生成する必要があります。
  2. 秘密鍵にパスワードを割り当てました。
  3. 次に、PuTTYで秘密鍵を設定します。 PuTTY-> SSH-> Auth->プライベートを参照します。
  4. 秘密鍵と公開鍵のパスが同じであることを確認してください。
  5. サーバーで公開鍵を構成する必要があります。 (私の場合、サーバーの人と話をして、彼が私の公開鍵をサーバーに追加できるかどうか尋ねました)。接続の反対側(サーバー)で公開鍵が必要です。
5
Matt.sinner