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


80

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

を介してopensshdをインストールapt-getし、ユーザー名とパスワードで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

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


私の場合、2つのAWSインスタンスがあります。そのうちの1つは問題なく動作し、もう1つはIntellij Ideaを介して接続するときに動作しますが、Puttyからは動作しませんが、最初は動作していました。したがって、私の場合はパテについての何かでなければなりません
マリアンクリューシュピーズ

回答:


70

問題が解決しました:

公開鍵ファイルに問題があったようです。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ば、動作するはずです。


1
authorized_keysviで開き、すべての改行を削除し、機能しました。
ルーク

1
公開鍵ファイルはどこにありますか?私はパテのみを使用しています。
Syler

1
私はすべてのものの上にまだサーバが(サーバが公開鍵を送った)利用できませサポートされている認証方法を送信されませんでした
アル・アラミンを

これがうまくいかないことをどのように知りましたか/予想される形式をどこで見つけましたか
マイケル

「これをauthorized_keysに貼り付けてから動作するはずです」と言うときに正確に貼り付ける必要があります。@ F21
Mahender Reddy Yasa

20
  1. /etc/ssh/sshd_configファイルを編集します。
  2. 変更PasswordAuthenticationChallengeResponseAuthenticationしますyes

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


実際、これはvie ftpソフトウェアの接続に問題がある場合に便利なコメントです
-cnu

それは私のために働く!
アシノックス

8
キーファイルを介した認証の全体的な目的は、パスワード認証を回避することであるため、実際にはに設定PasswordAuthenticationする必要がありますno
ペレ

それが私を助けた唯一の答えです。公開/秘密キー認証は必要ありませんでしたが、奇妙なメッセージが表示されていました。
セルジュロガッチ

おかげChallengeResponseAuthenticationで、Debian 10.0で問題が解決しました
realtebo

10

ちょっとしたヒントが、私が抱えていた頭痛の種を誰かに助けてくれることを願っています。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

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


これは4096ビットキーでは機能しません...文字の終端制限を超えています
-Freedo

1
後でbash履歴からこれを削除することをお勧めします。
ジェイソンパワーズマレー

@JasonPowersMurray:それは公開鍵です。公開鍵暗号方式は、キーが公開されたときにセキュリティを維持するために設計されたので、それは、bashの歴史の中で、他の場所の公開鍵を記録するためにOKですされています。
デビッドケーリー

9

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

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

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


正しい方向を示してくれてありがとう。この場合、所有者と権限の両方が間違っていました。
Zsolti

sshを介してアクセスできないため、ファイルのパーミッションを変更する方法は?それを行う他の方法はありますか?
-jit

1
私も所有権、グループシップ、および許可の問題でした。ここに示すように(stackoverflow.com/a/36808935/384670)、使用する必要があったアクセス許可は、ファイルに対して600、ディレクトリに対して700でした。また、所有者とグループをこの非rootユーザーに変更しました。
Mカッツ

5

解決済み:

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

2
「秘密鍵と公開鍵のパスが同じであることを確認してください。」それはそれとは何の関係もありません。あなたのプライベートの隣に公開鍵を配置する必要はありません...
user3790897

5

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.