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?
Antworten:
Ja, SELinux ist wahrscheinlich die Ursache. Das
.ssh
Verzeichnis ist wahrscheinlich falsch beschriftet. Schau mal/var/log/audit/audit.log
. Es sollte beschriftet seinssh_home_t
. Überprüfen Sie mitls -laZ
. Führen Sie,restorecon -r -vv /root/.ssh
wenn nötig.quelle
restorecon -r /
YMMV.type=AVC msg=audit(1434642809.455:94717): avc: denied { search } for pid=27032 comm="sshd" name="/" dev=dm-2 ino=2 scontext=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:file_t:s0 tclass=dir
- nicht sicher, was es bedeutetname="/"
- ich musste dierestorecon -r /
als @Irfy vorgeschlagenen ausführen.Ich hatte das gleiche Problem. In meinem Fall haben restorecon und chcon nicht funktioniert.
Ich wollte Selinux nicht deaktivieren. Nach vielen Recherchen habe ich schließlich herausgefunden, dass mein Home-Verzeichnis von einem anderen Ort bereitgestellt wurde (NFS). Ich habe diesen Fehlerbericht gefunden, der mir aufgefallen ist.
Ich rannte:
um zu bestätigen, dass use_nfs_home_dirs ausgeschaltet war und dann:
um es einzuschalten.
Jetzt kann ich mit meinem Schlüssel und ohne Eingabe eines Passworts auf meinen Computer sshen. Das Umschalten des Booleschen Werts use_home_nfs_dirs war das, was ich brauchte.
quelle
Um Mark Wagners Antwort hinzuzufügen
/home
, müssen Sie sicherstellen, dass Sie den SELinux-Sicherheitskontext festgelegt haben, wenn Sie einen benutzerdefinierten Pfad für das Basisverzeichnis verwenden (dh nicht )./myhome
Führen Sie dazu beispielsweise Folgendes aus, wenn Sie Benutzer-Ausgangsverzeichnisse haben :quelle
semanage
sudo yum install policycoreutils-python
Es sieht so aus, als ob Sie beim Testen der Verbindungen unterschiedliche Schlüssel verwenden, 0x7f266e1a8840 vs 0x7f85527ef230. Versuchen Sie, mit 'ssh -v example.com' eine Verbindung zu sshd herzustellen, das als Daemon und im Debug-Modus ausgeführt wird, und suchen Sie nach den von ssh verwendeten Schlüsseln in der Zeichenfolge "Offering RSA public key".
quelle
debug3: mm_answer_keyallowed: key 0xFFFFFFFFFF
ändert sich jedes Mal, wenn der sshd eine neue Verbindung erhält. Um dies zu bestätigen, suchen Sie einen Server, auf dem SSH funktioniert, drehen Sie den Schalter sshd LOGLEVEL auf debug3, starten Sie sshd neu, führen Sie ihn austail -f /var/log/secure |grep mm_answer_keyallowed
und melden Sie sich dann einige Male an, wobei Sie zwischen den einzelnen Verbindungen einige Sekunden (oder Minuten) warten. Sie werden feststellen, dass sich der Wert jedes Mal ändert. Und tatsächlich sieht es für mich wie eine Gegendarstellung aus.