OpenSSH – Login ohne Passwort mit öffentlichen und privaten SchlüsselKeys

Inhalt

Beschreibung

In diesem Artikel wird die Einrichtung einer SSH Verbindung unter der Verwendung von öffentlichen und privaten RSA Schlüssel Zertifikaten beschrieben. 

Hersteller OpenBSD Foundation
Autor(en) ohne
Lizenz Opne Source
OS Linux – Ubuntu Studio 16.04.5 lts
Openhabian 2.3.0-1
Kernel Linux WS-WYN-STUD01 4.4.0-138-lowlatency #164-Ubuntu SMP PREEMPT Tue Oct 2 18:11:47 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Linux openHABianPi 4.9.80-v7+ #1098 SMP Fri Mar 9 19:11:42 GMT 2018 armv7l GNU/Linux
Funktion io
Status open

Installationsvoraussetzung

Es wurde hier auf ein bestehendes Ubuntu Studio 16.04.05 lts und einer OpenHABianPi Installation zurückgegriffen.

Auf dem Ubuntu Rechner wurde die aktuelle Version von OpenSSH nachinstalliert und der Root Zugang aktiviert werden.

Installation

Server – Root SSH Zugang auf dem Ubuntu Server installieren und aktivieren (1)

In der sshd_config die folgende Zeile abändern, und root ein Passwort verpassen (ohne dem kein Login)

sudo apt-get install openssh-server
sudo nano /etc/ssh/sshd_config
...
PermitRootLogin prohibit-password
...

ändern in 

...
PermitRootLogin yes
...

Den SSH Dienst neu starten

sudo systemctl restart sshd

Für den Benutzer root ein Passwort vergeben

sudo passwd root

Konfiguration

Client – Auf openHABian RSA Schlüssel Zertifikate erstellen (2, 3)

Mit dem im SSH Server Paket enthaltenen Tool ssh-keygeyn müssen der private und der öffentliche, über den Parameter -t kann die Art des Schlüssels bestimmt werden (hier nun RSA mit 4096 bit) 

ssh-keygen -t rsa -b 4096

Es folgt die Abfrage zum Speicherortes: Der private Schlüssel befindet sich standardmäßig im Home Verzeichnis des Benutzers unter .ssh/id_rsa, der öffentliche Schlüssel unter .ssh/id_rsa.pub. Nach Bestätigung des Speicherortes wird die Passphrase zum Schutz der Schlüssel abgefragt.

Für eine spätere Anmeldung ohne Passwort oder besser Passphrasen Abfrage, wird hier dieser Punkt durch “geentert”. Sollten die Schlüssel nicht mit durch eine Passphrase geschützt werden, muss der Server System durch andere Mechanismen gegen Mißbrauch geschützt werden!

Mit folgenden Befehl kann man sich das Zertifikat anschauen

head ~/.ssh/id_rsa

Wenn das Zertifikat verschlüssel ist, ist dies durch die zwei Zeile zu erkennen:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
...

Wurde die Passphrase nicht vergebe sein, beginnt in der zweiten Zeile gleich das Zertifikat:

-----BEGIN RSA PRIVATE KEY-----
MIIJKQIBAAKCAgEAxUOdPnLextBTYMVRSPeyOtuu30KdK3KXoP/XraueSUmN9z9F
...

Das öffentliche Schlüssel Zertifikat auf den Remote Server kopieren

Das kopieren muss nicht von Hand erfolgen und kann über das mitgelieferte Tool ssh-copy-id erfolgen. Die Systax hiervon ist sehr einfach:

ssh-copy-id username@10.x.x.x

Nach Eingabe des Benutzer Passwortes beginnt die Übertragung

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
usnername@10.x.x.x password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@10.x.x.x'"
and check to make sure that only the key(s) you wanted were added.

Der öffentliche Schlüssel wird in folgender Zeile im Home Verzeichniss gespeichert

.ssh/authorized_keys

Bei den Schlüsseldateien ist zu beachten, dass nur der Eigentümer der Datei exklusive Lese- und Schreibrechte besitzt. Sollten diese geändert werden, hagelt es Fehlermeldungen.

Sichern der Schlüssel

Für spätere Verwendung empfiehlt sich eine Sicherung der erstellten Zertifkate

cp ~/.ssh/id_rsa* /path/to/safe/location/

Wenn die Schlüssel zurückgespielt werden, ist wichtig dass auch die Berechtigungen angepasst werden

sudo chown new-user:new-user id_rsa*

Die Schlüssel via SSH Agent auf dem Clientvorhalten

Damit die ständige Passphrasen Eingabe einen nicht vollständig den Nerv raubt, können die Schlüssel und die Passphrase über einen SSH Agenten vorgehalten werden. Dazu muss die Software keychain nachinstalliert werden.

sudo apt install keychain

Anschließend muss der Start von keychain beim Login eingerichtet werden. Dazu entweder in der Datei .bash_profile oder .profile im Home Verzeichnis folgenden Zusatz anhängen

/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh

Nach der Neuanmeldung auf der Konsole sollten folgende neuen Zeilen begrüßen

Last login: Tue Nov 13 00:52:00 2018 from 10.xx.xx.xxx

 * keychain 2.8.2 ~ http://www.funtoo.org
 * Found existing ssh-agent: 23298
 * Known ssh key: /home/openhabian/.ssh/id_rsa
Enter passphrase for /home/<username>/.ssh/id_rsa:
* ssh-add: Identities added: /home/<username>/.ssh/id_rsa

Ändern der Passphrase des Privaten Schlüssel

Zum ändern der Passphrase des privaten Schlüssel kann folgender Befehl genutzt werden

ssh-keygen -f ~/.ssh/id_rsa -p

Fazit

Es darf bei der Verwendung von KEINER Passphrase nicht vergessen werden, den Login auf den Client Maschinen auf z.B. das lokale Netzwerk einzuschränken (4)

Print Friendly, PDF & Email

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht.

*

Time limit is exhausted. Please reload the CAPTCHA.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.