dieser dann eine weiteres System steuern muss. Z.B. um es herunter zu fahren oder neu zu starten. Weitere Situationen sind ebenfalss denkbar. Dies kann alles über ssh erfolgen. Jedoch leider nicht ohne Kennwortabfrage. Dies lässt sich umgehen. Dazu muss ein Zertifikat erstellt werden welches auf das zu steuernde Remotesystem kopiert wird. Das Zertifikat wird dem gewünschten Benutzerkonte auf dem Remotesystem hinzugefügt. So kann per ssh ein Befehl auf dem Remotesystem eines dort existierenden Benutzerkontos ein Befehl ausgeführt werden. Das ganue ist sogar gar nicht so kompliziert ein zu richten und lässt sich mit wenigen Befehlen einrichten:
Zunächst sollten beide Systeme laufen und im Netzwerk verbunden sein. Bzw. eine Verbindung per ssh möglich sein. Hierzu muss ssh auf den Systemen akjtviert sein. Dies ist meistens schon der Fall. Auf dem Raspberry lässt sich dies über den Befehl sudo raspi-config nachholen.
Beispielsituation
Zum einrichten des Schlüssels braucht man sich nicht einmal am Remote-System anmelden. Hier im Beispeiel existieren zwei Unterschiedliche System: lokaler Host ist ein Raspberry auf dem die Benutzerkosnsole offen ist und auf dem dem die Befehle eingegeben werden. Angemeldet ist hier der Benutzer Pi.
Der Remot-Host ist ein Debian 8 System mit der IP 192.168.1.60 auf dem eine Asterisk-Telefonanlage läuft. Der Hauptbenutzer auf diesem ist root.
Zertifikat einrichten:
Zunächst wird ein Zertifikat eingerichtet. Hier im Beispiel ohne passphrase:
ssh-keygen -t rsa
es wird nach passphrase gefragt den wir per Tastatur erzeugen könnten. In diesem Fall lassen wir ihn allerdings leer und Bestätigen zweimal mit Enter. Ein neue Key wurde erzeugt und in /home/%user%/.ssh gespeichert.

Bashausführung Remote ohne Kennwortabfrage
Hier und da kommt es vor das man ein Script erstellen möchte das eine anderes Debian / Linux oder eine Raspberry steuert. Dies wäre denkbar wenn unsere Hausautomatisierung über einen Raspberry gestuert wird und

Das neue Zertifikat können wir nun auf das Remotsystem kopieren und dem Benutzer root hinzufügen. Somit weiß das Remotesstem immer das die Identischen Zertifikate zwischen den System ohen Kennwort zugelassen werden können:
sudo cat ~/.ssh/*.pub | ssh root@<remote-system>'umask 077; cat >>.ssh/authorized_keys'
In unserem Fall also:
cat ~/.ssh/*.pub | ssh root@192.168.1.60 'umask 077; cat >>.ssh/authorized_keys'
Das wars schon. Nun können wir Remote Befehle ausführen. Im Bild werden die Mailboxen in einem Ordner gelöscht. Alternativ kann man auch das System neu starten, sofern der Benutzer root auf dem Remote-System die Rechte dazu besitzt.:
ssh root@192.168.1.60 rm -f /var/spool/asterisk/voicemail/default/213/INBOX/*.*
oder
ssh root@192.168.1.60 reboot now
Inspiriert hat mich: http://heinz-otto.blogspot.de/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html
Projekte rund um Elektronik, Server, Windows und mehr