OpenSSH – Login ohne Passwort mit öffentlichen und privaten SchlüsselKeys
Inhalt
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)
Hinterlasse eine Antwort