web-dev-qa-db-ja.com

sshは公開鍵認証を許可しなくなりました

私のマシンは最近、受信公開鍵認証の受け入れを停止しました。 Windowsマシンからsshするubuntu 11.04デスクトップがあります。ページェントでPuTTYを使用します。接続できますが、セットアップしたrsaキーではなく、対話型パスワード認証でのみ接続できます。

キーが〜/ .ssh/authorized_keysにリストされていることを既に確認しました。これを修正するにはどうすればいいですか?

22
Andrew Redd

公開鍵認証が機能しない場合:サーバー側で、ホームディレクトリ(~)、~/.sshディレクトリ、および~/.ssh/authorized_keysファイルがすべて書き込み可能であることを確認してください- 所有者のみ。特に、それらのどれもグループによって書き込み可能である必要はありません(ユーザーがグループに一人でいる場合でも)。 chmod 755またはchmod 700は問題ありませんが、chmod 770は問題ありません。

何かが間違っている場合に確認するもの:

  • ssh -vvvを実行して、多くのデバッグ出力を確認します。 sshで接続できない理由を尋ねる質問を投稿する場合は、この出力を含めます(ホスト名とユーザー名を匿名化することもできます)。
  • 可能であれば、/var/log/auth.logのサーバーログを確認してください。
  • 公開キー認証が機能しない場合は、アクセス許可、特にグループビット(上記を参照)を再度確認してください。
28
Gilles

私は同じことに遭遇し、最終的にはホームディレクトリを暗号化したためだとわかりました。 SSHは、ログインするまでauthorized_keysファイルを読み取ることができないため、基本的には最初にパスワード認証を強制します。次のリンクの暗号化されたホームディレクトリに関するセクションを参照してください。

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory

9
Willie Wheeler

/ etc/ssh/sshd_configの設定が正しいことを確認します。

PKIのみの使用を強制し、パスワードが許可されないようにするには、次の行を見つけます。

#PasswordAuthentication yes 

ファイルでコメントを外し、設定します

PasswordAuthenticate no

また、設定のバランスを読み、それらが意味をなすようにします。特に、DSAは危険にさらされていることがわかっているため、RSAキーを使用するようにしてください。

4
cmdematos

ディレクトリの権限を確認し、「。」がある場合それらの直後に、selinuxが有効になっている場合があります。これにより、鍵交換が台無しになり、デフォルトで手動パスワード識別になります。

SELinuxを無効にしてトラブルシューティングを行うには、次の手順に従います。 http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html または、/ etc/selinux/configファイルを編集して、「強制」から「無効」に変更します。

お役に立てれば。

3
tweekd

この問題の考えられる原因の1つは、DSAキーを持っているが、SSH(明らかに)デフォルトでRSAキーを要求することです。 16.04にアップグレードすると問題が発生しました。もっと見ることができます こちら ですが、簡単な答えは~/.ssh/configに以下を追加することです:

PubkeyAcceptedKeyTypes ssh-dss
2
DeegC

/ etc/ssh/sshd_configで「PasswordAuthentication yes」のコメントを外して、この問題を修正しました。

1
Ben Ernest

2つの異なるマシン間の通信のトラブルシューティングが必要なため、クライアント側の~/.sshに2つの秘密キーがありました。

各サーバーホストを~/.ssh/identityのそれぞれの秘密キーで構成する代わりに、すべてのホストに対してセカンダリ(この場合は間違った)キーを構成しました。

Host *
IdentityFile ~/.ssh/identity_b

~/.ssh/identityを修正して問題を解決しました:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
1
Uli Klumpp

私はちょうど同じ問題を抱えていましたが、chmodでパーミッションを変更しても役に立ちませんでした。なぜなら、~/.ssh/authorized_keysファイルの所有権を持っていないことが判明したからです。 .sshディレクトリの所有権は次の方法で変更できます。

Sudo chown -R "$USER" ~/.ssh
0
Nick