Wie man die passenden Keys oder Schlüssel erstellt.
Als erstes mal Grundsätzliches. Es gibt immer einen privaten Schlüssel und einen öffentlichen Schlüssel. Den privaten muss man für sich behalten, er ist sozusagen der Geheimnisträger. Der öffentliche Schlüssel kann jedermann zugänglich gemacht werden.
Ganz wichtig: der private Schlüssel befindet sich auf dem Computer, von dem aus man sich auf einen anderen Computer einloggen will. Der öffentliche Schlüssel befindet sich auf dem Computer, auf den man sich einloggen will. Beispiele:
- Du willst dich von deinem Mac aus auf deinen Raspi einloggen. Dazu erstellst du ein Schlüsselpaar (bestehend aus privatem und öffentlichem Schlüssel) auf deinem Mac. Den öffentlichen Schlüssel kopierst du an eine bestimmte Stelle auf deinem Raspi. Der private Key bleibt da, wo er ist, nämlich auf dem Mac.
- Du willst dich von deinem Raspi über das Internet auf meinen Mac einloggen (und wir tun mal so, als wäre das einfach so möglich). Dazu erstellst du ein Schlüsselpaar auf deinem Raspi und sendest mir den öffentlichen Schlüssel per Mail, WhatsApp, Telegram, SMS oder sonstwie in Textform. Ich kopiere deinen öffentlichen Schlüssel auf meinem Mac an eine bestimmte Stelle.
Klar? Schlüsselpaar erstellen und öffentlichen Schlüssel auf die Zielmaschine bringen. Das ist alles. Und wie macht man das jetzt?
Du willst dich von deinem Raspi auf deinen Mac einloggen. Also erstellst du auf deinem Raspi ein Schlüsselpaar - aber nur, wenn du noch keins hast! Die Schlüssel befinden bei DJay im Verzeichnis des Users pi (das habe ich aus der Prozessliste abgelesen, die du oben veröffentlicht hast: deine Homebridge wird vom User pi gestartet). Ob man schon Schlüssel hat, kann man nachsehen, indem man den Inhalt des Verzeichnisses .ssh auflistet.
ls -l .ssh
Und dabei könnte sowas dabei herauskommen:
-rw------- 1 pi pi 1015 Sep 27 2019 authorized_keys
-rw------- 1 pi pi 1811 Sep 27 2019 id_rsa
-rw------- 1 pi pi 391 Sep 27 2019 id_rsa.pub
-rw------- 1 pi pi 2797 Feb 13 11:12 known_hosts
Der private Schlüssel ist in der Datei id_rsa gespeichert. Der öffentliche Schlüssel befindet sich in id_rsa.pub. Die anderen beiden Dateien gehören nicht zum Schlüssel, aber der Ordnung halber: in der Datei authorized_keys befinden sich die öffentlichen Schlüssel von anderen Leuten und in known_hosts befinden sich die Adressen von Computern, zu denen man per ssh und Schlüssel Kontakt hatte.
Wenn kein Schlüsselpaar existiert, muss man ein neues erstellen. Wenn eins existiert, sollte man das verwenden. Existierende Schlüsselpaare zu überschreiben kann hässliche Folgen haben und sollte nur dann gemacht werden, wenn man sich sicher ist, dass die nicht irgendwo in Gebrauch sind.
Also, auf deinem Raspi geht es los:
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):
Created directory '/home/pi/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LZ2HWPgyZlbNVdOv5U/NqJBwG8/AT92eJNiZuJzjR40 pi@raspberrypi
The key's randomart image is:
+---[RSA 2048]----+
| .oo|
| . o . o|
| ..o *.o..|
| .B==.=..+|
| SoBX+ =Bo|
| + ++*+Eoo*|
| ..o. ..|
| ... .|
| . |
+----[SHA256]-----+
Die Schlüsselgenerierung fragt dich nach dem Namen, die die Schlüssel haben sollen und nach dem Passwort, den der Schlüssel haben soll. Du gibst überall nichts ein und drückst einfach die Entertaste.
Das war der erste Schritt. Die Schlüssel sind erstellt. Nun muss noch der öffentliche Schlüssel auf den Mac. Dazu gibt es den Befehl ssh-copy-id, der ergänzt werden muss durch die IP-Adresse des Mac und den Usernamen des Users, der später den Scvreensaver steuern soll. Wahrscheinlich ist es dein eigener Account auf dem Mac. Also:
ssh-copy-id [email protected] (du setzt hier natürlich die passenden Werte ein)
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/pi/.ssh/id_rsa.pub"
The authenticity of host 192.168.178.20 can't be established.
ECDSA key fingerprint is SHA256:WEElPAtwb1dkEA5mj8GHKZTsYoYdZd9kGJIsArGJJng.
Are you sure you want to continue connecting (yes/no)? yes
/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
Password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Bitte beachte, dass dieser Prozess möglicherweise die Eingabe des Wortes yes verlangt. Wahrscheinlich passiert das bei dir nicht, aber das ist egal. Falls die Frage Are you sure you want to continue connecting (yes/no)? kommt: yes. Das ganze Wort. Auf jeden Fall musst du danach das Passwort eingeben, das der User djay auf dem Mac zum Einloggen verwendet.
Und fertig.
Zeit zum Testen:
ssh [email protected]
und zack!, du solltest auf dem Mac eingeloggt sein, ohne ein Password angeben zu haben. Mit logout wieder ausloggen und deinen Screensaver-Befehl testen:
ssh [email protected] osascript -e 'tell application "ScreenSaverEngine" to run'
und zack! geht's Licht aus. Sollte jedenfalls, ich kann's nicht ausprobieren.
Auf dem Mac ist nun übrigens ein Verzeichnis entstanden. Du kannst es dir nach dem Einloggen auf den Mac anzeigen lassen mit ls -l .ssh. Dort befindet sich eine Datei namens authorized_keys, und die enthält den öffentlichen Schlüssel, den du auf dem Raspi erstellt hast.
So, ganz zum Ende noch der folgende wichtige Hinweis: so wie ich das beschrieben habe, funktioniert das (hoffentlich) bei DJay . Das funktioniert so nicht, wenn man die Homebridge nach der Forenanleitung aufgesetzt hat. Hier muss man, bevor man die Schlüssel erstellt, noch einen weiteren Befehl eingeben:
sudo su - homebridge und erst dann ssh-keygen und den ganzen Rest.