web-dev-qa-db-ja.com

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

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
10
tratto

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

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

13
tratto

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

1。ホームディレクトリのアクセス許可を確認するおよび〜/ .sshおよび〜/ .ssh/authorized_keysアクセス許可(@erikによる)

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

2。check/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に設定)、再起動します。パスワードなしのログインで問題なく動作しました。

my現在機能している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の小さなものを変更できることを知っておくといいでしょう。誰かが答えを改善できますか?

2
gaoithe

解決策は、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

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

0
sentifool