Good to Know Database

CentOS 6: SSH-Login ohne Passwort-Authentifizierung


Beim Aufbau einer SSH-Verbindung zu einem Linux-System benötigen Sie in der Regel ein Passwort um sich auf dem Linux-System zu authentifizieren. Eine Alternative zu der Passwort-Authentifizierung auf einem entfernten Linux-System bietet ein sogenannter SSH-Schlüssel. Dadurch müssen Sie sich beim SSH-Server nicht mehr mit Ihrem Passwort authentifizieren. Bei SSH2 können Sie für den Schlüssel den Digital Signature Algorithm (DSA) oder das asymmetrische Kryptosystem RSA verwenden.

Zum Erstellen eines RSA-Schlüsselpaares rufen Sie auf Ihrem lokalen Linux-System den folgenden Befehl auf und folgen den Anweisungen.

Hinweis: Ihren privaten Schlüssel sollten Sie mit einem Passwort vor Missbrauch schützen.

[georg@centos6-client ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "My SSH Key"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/georg/.ssh/id_rsa.
Your public key has been saved in /home/georg/.ssh/id_rsa.pub.
The key fingerprint is:
64:15:14:ee:bd:94:c9:79:f3:7a:a8:6f:01:8d:4c:44 My SSH Key

Durch die Option -t legen Sie fest, ob ein RSA- oder ein DSA-Schlüsselpaar erstellt werden soll. Den Pfad und Dateinamen für das Schlüsselpaar können Sie mit -f angeben. Optional können Sie mit der Option -C auch einen Kommentar hinterlegen.

Sollten Sie das DSA-Verfahren verwenden wollen, ändern Sie die Option -t wie folgt ab. Beachten Sie bitte, dass Sie in diesem Fall die Dateinamen bei den folgenden Befehlen anpassen müssen.

[georg@centos6-client ~]$ ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "My SSH Key"

Nachdem Sie die beiden Dateien ~/.ssh/id_rsa und ~/.ssh/id_rsa.pub beziehungsweise ~/.ssh/id_dsa und ~/.ssh/id_dsa.pub generiert haben, kopieren Sie den öffentlichen Schlüssel (~/.ssh/id_rsa.pub beziehungsweise ~/.ssh/id_dsa.pub) in Ihr Homeverzeichnis auf dem entfernten Linux-System.

[georg@centos6-client ~]$ scp ~/.ssh/id_rsa.pub root@192.168.10.1:

Auf dem entfernten System hängen Sie jetzt Ihren öffentlichen Schlüssel mit dem folgenden Befehl an die Datei ~/.ssh/authorized_keys an.

[root@centos6-server ~]$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Überprüfen Sie anschließend die Zugriffsrechte der Datei und ändern diese wenn nötig.

[root@centos6-server ~]$ chmod 0600 ~/.ssh/authorized_keys

Falls Sie die Datei ~/.ssh/authorized_keys soeben erst erstellen mussten, müssen Sie den Security Conext der Datei setzen. Sollten Sie diesen Schritt nicht durchführen, verhindert SELinux den Zugriff auf die ~/.ssh/authorized_keys durch den SSH-Daemon. Dies zeigt sich anhand der folgenden Fehlermeldungen in der /var/log/audit/audit.log.

[root@centos6-server ~]# tail -f /var/log/audit/audit.log
[...]
type=AVC msg=audit(1313877838.456:440): avc:  denied  { read } for  pid=23962 comm="sshd" name="authorized_keys" dev=sda1 ino=982 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file

Den aktuellen Security Context der authorized_keys zeigt Ihnen der folgende Befehl. In diesem Fall wurde der korrekte Security Context noch nicht gesetzt.

[root@centos6-server ~]# ls -Z .ssh/
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 authorized_keys

Um den Security Context zu setzen, rufen Sie einfach den folgenden Befehl auf.

[root@centos6-server ~]# restorecon -R -v /root/.ssh or ~/.ssh
restorecon reset /root/.ssh context unconfined_u:object_r:admin_home_t:s0->system_u:object_r:home_ssh_t:s0
restorecon reset /root/.ssh/authorized_keys context unconfined_u:object_r:admin_home_t:s0->system_u:object_r:home_ssh_t:s0
restorecon reset /root/.ssh context system_u:object_r:ssh_home_t:s0->system_u:object_r:home_ssh_t:s0
restorecon reset /root/.ssh/authorized_keys context system_u:object_r:ssh_home_t:s0->system_u:object_r:home_ssh_t:s0

Danach können Sie den Security Conext wieder mit ls überprüfen.

[root@centos6-server ~]# ls -Z .ssh/
-rw-r--r--. root root system_u:object_r:ssh_home_t:s0  authorized_keys

Vergessen Sie nicht die Datei mit Ihrem öffentlichen Schlüssel auf dem entfernten System zu löschen.

[root@centos6-server ~]$ rm -f ~/id_rsa.pub

Anschließend können Sie wie gewohnt eine SSH-Verbindung zu dem Linux-System aufbauen.

[georg@centos6-client ~]$ ssh root@192.168.10.1

Wenn Sie wie empfohlen Ihren privaten Schlüssel mit einem Passwort geschützt haben, sollten Sie jetzt die folgende Aufforderung zur Eingabe des Passwortes erhalten.

Enter passphrase for key '/home/georg/.ssh/id_rsa':


Dieser Eintrag wurde am 26.08.2011 erstellt.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_1357.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer