私のマシンは最近、受信公開鍵認証の受け入れを停止しました。 Windowsマシンからsshするubuntu 11.04デスクトップがあります。ページェントでPuTTYを使用します。接続できますが、セットアップしたrsaキーではなく、対話型パスワード認証でのみ接続できます。
キーが〜/ .ssh/authorized_keysにリストされていることを既に確認しました。これを修正するにはどうすればいいですか?
公開鍵認証が機能しない場合:サーバー側で、ホームディレクトリ(~
)、~/.ssh
ディレクトリ、および~/.ssh/authorized_keys
ファイルがすべて書き込み可能であることを確認してください- 所有者のみ。特に、それらのどれもグループによって書き込み可能である必要はありません(ユーザーがグループに一人でいる場合でも)。 chmod 755
またはchmod 700
は問題ありませんが、chmod 770
は問題ありません。
何かが間違っている場合に確認するもの:
ssh -vvv
を実行して、多くのデバッグ出力を確認します。 sshで接続できない理由を尋ねる質問を投稿する場合は、この出力を含めます(ホスト名とユーザー名を匿名化することもできます)。/var/log/auth.log
のサーバーログを確認してください。私は同じことに遭遇し、最終的にはホームディレクトリを暗号化したためだとわかりました。 SSHは、ログインするまでauthorized_keysファイルを読み取ることができないため、基本的には最初にパスワード認証を強制します。次のリンクの暗号化されたホームディレクトリに関するセクションを参照してください。
https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory
/ etc/ssh/sshd_configの設定が正しいことを確認します。
PKIのみの使用を強制し、パスワードが許可されないようにするには、次の行を見つけます。
#PasswordAuthentication yes
ファイルでコメントを外し、設定します
PasswordAuthenticate no
また、設定のバランスを読み、それらが意味をなすようにします。特に、DSAは危険にさらされていることがわかっているため、RSAキーを使用するようにしてください。
ディレクトリの権限を確認し、「。」がある場合それらの直後に、selinuxが有効になっている場合があります。これにより、鍵交換が台無しになり、デフォルトで手動パスワード識別になります。
SELinuxを無効にしてトラブルシューティングを行うには、次の手順に従います。 http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html または、/ etc/selinux/configファイルを編集して、「強制」から「無効」に変更します。
お役に立てれば。
この問題の考えられる原因の1つは、DSAキーを持っているが、SSH(明らかに)デフォルトでRSAキーを要求することです。 16.04にアップグレードすると問題が発生しました。もっと見ることができます こちら ですが、簡単な答えは~/.ssh/config
に以下を追加することです:
PubkeyAcceptedKeyTypes ssh-dss
/ etc/ssh/sshd_configで「PasswordAuthentication yes」のコメントを外して、この問題を修正しました。
2つの異なるマシン間の通信のトラブルシューティングが必要なため、クライアント側の~/.ssh
に2つの秘密キーがありました。
各サーバーホストを~/.ssh/identity
のそれぞれの秘密キーで構成する代わりに、すべてのホストに対してセカンダリ(この場合は間違った)キーを構成しました。
Host *
IdentityFile ~/.ssh/identity_b
~/.ssh/identity
を修正して問題を解決しました:
Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
私はちょうど同じ問題を抱えていましたが、chmod
でパーミッションを変更しても役に立ちませんでした。なぜなら、~/.ssh/authorized_keys
ファイルの所有権を持っていないことが判明したからです。 .ssh
ディレクトリの所有権は次の方法で変更できます。
Sudo chown -R "$USER" ~/.ssh