AマシンからBマシンにrootユーザーのキーベースの認証を正常に作成しました。
次に、Aマシンと同じようにBマシンで新しいユーザーを作成しました。彼をUSER
と呼びましょう。私は彼のためにBマシンでホームディレクトリを作成しました/home/USER
そして、マシンAからマシンBへのキーベースの認証を作成します。
だから、私はマシンで走った
ssh-keygen -t rsa
、すべてのパスを受け入れたので、/home/USER/.ssh/id_rsa
、フレーズなし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
解決策を見つけました。権限に問題がありました。
/home/USER
リモートマシンのすべての権限が付与されましたが、キーベースの認証では755に設定する必要があります
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の小さなものを変更できることを知っておくといいでしょう。誰かが答えを改善できますか?
解決策は、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
これで、鍵ベースのログインが機能するはずです。