Ich habe keine Ahnung, wie das passiert. Die Distribution ist Scientific Linux 6.1 und alles ist so eingerichtet, dass die Authentifizierung über den öffentlichen Schlüssel erfolgt. Wenn sshd jedoch als Daemon ausgeführt wird (Dienst sshd start), werden keine öffentlichen Schlüssel akzeptiert. (Um dieses Protokoll zu erhalten, habe ich das sshd-Skript geändert und die Option -ddd hinzugefügt.)
debug1: trying public key file /root/.ssh/authorized_keys
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 0/0 (e=0/0)
debug1: trying public key file /root/.ssh/authorized_keys2
debug1: restore_uid: 0/0
Failed publickey for root from xxx.xxx.xxx.xxx port xxxxx ssh2
debug3: mm_answer_keyallowed: key 0x7f266e1a8840 is not allowed
debug3: mm_request_send entering: type 22
debug3: mm_request_receive entering
debug2: userauth_pubkey: authenticated 0 pkalg ssh-rsa
debug3: Wrote 64 bytes for a total of 1853
debug1: userauth-request for user root service ssh-connection method publickey
debug1: attempt 2 failures 1
Wenn sshd im Debug-Modus ausgeführt wird /usr/sbin/sshd -ddd
, funktioniert die Authentifizierung wie ein Zauber:
debug1: trying public key file /root/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
debug1: matching key found: file /root/.ssh/authorized_keys, line 1
Found matching RSA key: d7:3a:08:39:f7:28:dc:ea:f3:71:7c:23:92:02:02:d8
debug1: restore_uid: 0/0
debug3: mm_answer_keyallowed: key 0x7f85527ef230 is allowed
debug3: mm_request_send entering: type 22
debug3: mm_request_receive entering
debug3: Wrote 320 bytes for a total of 2109
debug2: userauth_pubkey: authenticated 0 pkalg ssh-rsa
Postponed publickey for root from xxx.xxx.xxx.xxx port xxxxx ssh2
debug1: userauth-request for user root service ssh-connection method publickey
debug1: attempt 2 failures 0
Irgendwelche Ideen?? Hat jemand so etwas gesehen?
Anmerkungen:
Dateiberechtigungen wurden doppelt geprüft:
# ll -d .ssh
drwx------. 2 root root 4096 Oct 14 10:05 .ssh
# ll .ssh
total 16
-rw-------. 1 root root 786 Oct 14 09:35 authorized_keys
-rw-------. 1 root root 1675 Oct 13 08:24 id_rsa
-rw-r--r--. 1 root root 393 Oct 13 08:24 id_rsa.pub
-rw-r--r--. 1 root root 448 Oct 13 12:51 known_hosts
Ich wurde gefragt, ob sshd im "Daemon-Modus" auf root-Dateien zugreifen kann. Die naheliegendste Antwort auf diese Frage lautet:
# netstat -ntap | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 19847/sshd
# ps -ef | grep 19847
root 19847 1 0 09:58 ? 00:00:00 /usr/sbin/sshd
Wenn sshd als root ausgeführt wird, weiß ich nicht, wie es nicht möglich ist, auf seine eigenen Dateien zuzugreifen. Könnte SELinux die Ursache sein?