SSHは、鍵ベースの認証をセットアップした後もパスワードを要求します


10

AマシンからBマシンにrootユーザーのキーベースの認証を正常に作成しました。

ここで、Aマシンと同じようにBマシンで新しいユーザーを作成しましたUSER。Bマシンで彼のホームディレクトリ/home/USERを作成し、マシンAからBマシンへのキーベースの認証を作成したいと思います。

だから、私はマシンで走った

  1. ssh-keygen -t rsa、すべてのパスを受け入れたので/home/USER/.ssh/id_rsa、フレーズなし
  2. ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP、パスワードを入力してマッサージを受けた

マシンにログインしてみてくださいbla bla bla

したがって、すべてが問題ないようです。

しかし、接続しようとしたときにssh USER@BmachinesIPパスワードを要求されました。私はログを見て試してみましたがssh -vvv USER@BmachinesIP、ここに出力の一部があります:

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,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 public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
USER@BmachinesIP's password:

それで、誰かが私が間違ったことをしたり、私が変更すべきことを教えてもらえますか?たぶん問題は権限にあります、ここにあります:

マシン上:

drwx------  2 USER USER    SIZE DATE TIME .ssh
-rw-------  1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r--  1 USER USER 413 2011-10-31 14:36 id_rsa.pub

そしてBマシンで:

drwx------  2 USER defaultGroup    SIZE DATE TIME .ssh
-rw-------    1 USER defaultGroup    SIZE DATE TIME authorized_keys

回答:


13

解決策を見つけました。権限に問題がありました。

/home/USER リモートマシンではすべての権限が付与されていますが、キーベースの認証では755に設定する必要があります


2
ワオ。適切な公開キー構成の中心であるにもかかわらず、アクセス許可に関するデバッグ出力がないことは驚くべきことです。
jchook

うわー、あなたは正しいです。現在は動作しています...もともと許可を保持したいのですが(775)。それを変更する方法についての手がかりはありますか?
Pablo Olmos de Aguilera C.

方法がないようです。回避策のみがsshd_configでStrictModes noに設定されます。:/。
Pablo Olmos de Aguilera C.

2
基本的にchmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys、これらの権限が必要です。ここからMaxime Rの回答からコピー:askubuntu.com/questions/54670/passwordless-ssh-not-working
erik

2
これらのアクセス許可の変更はすべて完了しましたが、sshを実行するとパスワードの入力を求められます。また、秘密鍵が両方のマシンで同じであることも確認しました(Ubuntu)。かなり困惑しました。
アマルゴビナス2014年

2

CentOS7の新規インストールで同じ問題が発生しました。

1.ホームディレクトリの権限と〜/ .sshおよび〜/ .ssh / authorized_keys権限を確認します(@erikによる)

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

2. / etc / ssh / sshd_config設定を確認します&&サービスsshd再起動(編集ごとに)便利です:sshd_configで「LogLevel VERBOSE」を試してください。

問題がないことをすべて確認した後も、パスワードプロンプトが表示されます。

-vvvログでsshクライアントを実行します。

debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply

サーバー(/ var / log / secure)ログ:

Failed publickey for * from * port * ssh2: RSA *

sshサーバーはクライアントにエラー情報を送信しません。これはセキュリティ上のリスクになるためです。

別のポート 'sshd -p 5555 -d'でsshdを実行した場合。キーが機能しました。パスワードなしでログインできます。WTF?

次に、selinuxを無効にし(/ etc / selinux / configでSELINUX = disabledを設定)、再起動します。パスワードなしのログインは問題なく動作しました。

私の現在作業中のsshd_config設定:

[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config  
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server

したがって、パスワードなしのsshログインを機能させるために、selinuxで何か小さな変更を加えることができるとしたら、知っておくとよいでしょう。誰かが答えを改善できますか?


0

解決策は、SELinuxを無効にすることではなく、ユーザーディレクトリのSELinux権限を修正することです。ユーザーディレクトリコンテキストをに設定する必要がありますuser_home_t

チェックする、

$ sudo ls -Z /home/

ユーザーディレクトリのコンテキストが以外の場合user_home_t、SELinuxは、そのユーザーのそのユーザーディレクトリへの公開鍵を介したSSHを許可しません。

修正するには

$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser

これで、鍵ベースのログインが機能するはずです。

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