SSH Funktionen für Anfänger

B

bschra

Mitglied
Thread Starter
Dabei seit
09.10.2014
Beiträge
29
Reaktionspunkte
0
Hallo,

ich möchte meinen Mac ausschließlich innerhalb des eigenen W-LANs per SSH steuern. Auf dem Gebiet fehlt mir allerdings jegliche Erfahrung.

1. Kann ich den Zugriff per SSH z.B. auf bestimmte MAC-Adresssen begrenzen (z.B. ausschließlich Befehle vom Raspberry Pi annehmen)?

2. Kann ich folgende Einstellungen per SSH vornehmen?
2.1 Systemeinstellungen -> Energie sparen -> Ruhezustand für Computer auf "Nie" setzen
2.2 Systemeinstellungen -> Energie sparen -> Ruhezustand für Computer auf x Minuten (in diesem Fall 1 Stunde) setzen
2.3 Normalerweise ist bei mir die Eingabe eines Passwortes nötig, wenn der Computer aus dem Ruhezustand aufgeweckt wird. Kann man dies ein- und ausschalten?
2.4 Ist das Schicken in den und Aufwecken aus dem Ruhezustand per SSH möglich?

Vielen Dank für Eure Hilfe!
LG
 
2.4 Ist das Schicken in den und Aufwecken aus dem Ruhezustand per SSH möglich?

Das Aufwecken aus dem Ruhezustand garantiert nicht ... damit du überhaupt per SSH auf den Mac kommst muss er ja schon "wach" sein!

Zum Aufwecken muss ein "Magic Packet" an den Mac geschickt werden, dafür gibts diverse Tools und sicherlich auch eins für das Linux auf dem Pi.
 
1. MAC weiss ich nicht, aber HOSTNAME und IP geht
2. Indirekt über pmset oder vi /Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist

2.3 vor dem Anmelden??
 
Vielen Dank für die Infos.

2.3 vor dem Anmelden?? -Nein. Ich bin noch als Benutzer angemeldet, wenn ich den Befehl triggern möchte.

pmset habe ich gegoogelt... Bin aber wie gesagt blutiger Anfänger. Gibt es eine Möglichkeit, die SSH Befehle zu testen bzw. zu simulieren? Sodass ich mir nicht die Systemeinstellungen zerschieße, während ich versuche, die richtigen Befehle zusammenzustellen.
 
Gibt es eine Möglichkeit, die SSH Befehle zu testen bzw. zu simulieren? Sodass ich mir nicht die Systemeinstellungen zerschieße, während ich versuche, die richtigen Befehle zusammenzustellen.

Neues "Spiel-OS X" in einer virtuellen Maschine installieren - mit kostenlosem VirtualBox oder Testversionen von VMware Fusion oder Parallels.
 
Du kannst per SSH ein beliebiges Skript auf dem Mac starten. Das Skript entwickelst und testest Du auf dem Mac, angestoßen wird es dann vom Rasppi z.B. per

Code:
ssh bschra@192.168.47.11 /Users/bschra/tuwas.sh

Was das Skript tut, ist SSH egal, SSH sorgt für eine sichere Verbindung.

Wenn Du in der Systemsteuerung unter "Energie sparen" den Haken bei "Ruhezustand bei Netzwerkzugriff beenden" gesetzt hast, sollte der Mac bei SSH-Zugriff aufwachen.

Hier gibt es was zu SSH zu lesen.


Zum Steuern musst Du Dir entsprechende Skripte auf dem Mac erstellen.
 
Verstehe. Vielen Dank!

Das ist ja echt ein spannendes Thema, mit dem ich mich mal auseinandersetzen muss. Soweit bin ich gekommen:

do shell script "pmset displaysleep 1" password "pw" with administrator privileges
do shell script "pmset sleep 0" password "pw" with administrator privileges
set volume output volume 1

Das ist mein Medien-An Script. Das Display schaltet sich nach 1 Minute ab, Ruhezustand deaktiviert, Lautstärke auf ganz leise.

Per SSH lässt sich das Ganze über das Smartphone auch ausführen. War eigentlich mein Hauptanliegen :)
Kann ich einem Script auch admin-Privilegien erteilen, sodass ich in das Script nicht noch mein PW eingeben muss?

EDIT: Wenn ich auf dem Smartphone über eine bestimmte App den SSH Befehl ausführe (bei der ich mich vorher angemeldet habe), klappt alles. Gebe ich aber direkt per Shell ein, wird das Passwort abgefragt. Diese Befehle dienen ja der Automation, ich möchte quasi auf dem Smartphone nur eine selbstgenerierte App bzw. ein Shell Script öffnen, welches dann das entsprechende Applescript auf dem Mac startet. Bevor ich am Smartphone noch meine Logins eingeben muss könnte ich ja eher direkt zum Mac gehen und dann Script dort selbst starten, wäre vermutlich schneller ^^
 
Zuletzt bearbeitet:
Was SSH-Logins betrifft: Eine Möglichkeit, SSH-Logins zu "automatisieren", besteht darin, SSH-Keys zu benutzen.

BTW leider hast du ja nicht gesagt, was du mit Medien, mit welchen Scripts, dem Raspi und deinem Mac vor hast, also welchem Zweck das alles letztendlich dient. Vielleicht gibt es ja noch einfachere, benutzerfreundlichere Lösungen.
 
Was ich vorhabe ist eigentlich nur eine Spielerei, aber ich hätte sie trotzdem gerne umgesetzt... Und zwar geht es um Folgendes:

Sobald mein Android im Wohnzimmer einen NFC Tag einliest, soll Llama via (Batch?)Script (erstes Problem, welches ich nicht gelöst bekomme) per SSH (leider nicht so einfach zu bewerkstelligen, auch mit SSH-Keys, soweit ich das bis jetzt recherchieren konnte) das Applescript aufrufen, welches den iMac stummschaltet, Ruhezustand deaktiviert und den Bildschirm nach einer Minute abschaltet.
Ein anderer NFC Tag soll den iMac in den Normalzustand (Lautstärke 30, Ruhezustand nach 1h, Bildschirm aus nach 15min) versetzen. Das habe ich mit einer abgeänderten Version des vorhin geposteten Applescripts realisiert.

Ich bin ein absoluter Neuling auf dem Gebiet, aber seitdem ich mit Llama herumexperimentiere, fallen mir halt verschiedene Lösungen ein, die ich mehr oder weniger spaßeshalber umsetzen möchte. In diesem Fall geht es darum, dass der iMac auch mein Plex Media Server ist, weshalb ich den Ruhezustand deaktiviert haben möchte, während ich am TV Plex Inhalte wiedergebe.
(ich könnte natürlich, wie bisher, einfach am Mac auf mute drücken, Caffein starten und ctrl-shift-eject drücken. Das würde nur ein paar Sekunden dauern, aber ich möchte eben diese Bastellösung mit Automation via NFC Tag gerne zumindest mal als proof of concept umsetzen :D)

In Zukunft möchte ich mich auch ein bisschen in die Materie Raspberry Pi einarbeiten. In dem Fall könnte Llama den Pi triggern, welcher dann über Debian das zugehörige Bash Script an den iMac schickt. In diesem Fall wären SSH-Keys vermutlich einfacher umzusetzen. Da ich den Pi noch nicht vorliegen habe, läuft Debian testweise in einer VirtualBox auf meinem iMac - aber aus irgendwelchen Gründen lässt sich zwar von Debian auf den Mac per SSH zugreifen, aber nicht vom Mac auf Debian (korrekter IP, Username, und Passwort, aber trotzdem kein Zugriff möglich, weil angeblich falsches PW); ich habe es nun aber so verstanden, dass man die SSH-Keys per SSH auf den anderen Rechner in das richtige Verzeichnis kopiert; dies habe ich mangels Verbindung von iMac zu Debian aber nicht geschafft.
 
Noch zu den SSH-Logins: Wenn Du den SSH-Key ohne Passphrase generierst, wird nichts mehr abgefragt. Ist aber ein Sicherheitsrisiko. Für einen Raspi, der im Haus bleibt, vertretbar. Auf einem Smartphone würde ich dass lassen. In der VM sollte das auch vertretbar sein. Die Keys kannst Du auch mit einem USB Stick übertragen.
 
Und warum lässt du auf deinem iMac nicht einfach ein Applescript (als Programm) im Hintergrund laufen, das je nach Bedarf die Einstellungen ändert und alle x Minuten erneut die Lage checkt? Aktivierst du z.B. einen Plex Client und der greift auf deinen iMac zu, werden dort (auf dem iMac) die Einstellungen geändert. Ist der Plex Media Server dann irgendwann nicht mehr aktiv, merkt das Hintergrundprogramm das und ändert wieder die Einstellungen. Du könntest z.B. das Applescript-Programm Narcolepsy für deine Zwecke anpassen. Dann sparst du dir die ganze Mobiltelefon/Llama/SSH-Sache, wenn ich deine Absicht richtig verstanden habe.
 
Noch zu den SSH-Logins: Wenn Du den SSH-Key ohne Passphrase generierst, wird nichts mehr abgefragt. Ist aber ein Sicherheitsrisiko. Für einen Raspi, der im Haus bleibt, vertretbar. Auf einem Smartphone würde ich dass lassen. In der VM sollte das auch vertretbar sein. Die Keys kannst Du auch mit einem USB Stick übertragen.

:confused: Warum stellen shh-keys ohne passphrase ein Sicherheitsrisiko dar? Sehe ich jetzt eine Lücke nicht?

Wenn du den ssh Server unter Kontrolle hast, und das remote Gerät mit dem private key verlierst, löscht du den public key auf dem Server. Dann ist ein Login auf dem Server auch nicht mehr möglich.

Und wenn du den Server nicht unter Kontrolle hast, dann kann jemand mit dem public key vom Server auch nicht viel anfangen.

BTW, den public key kannst du auch mit ssh auf den Server übertragen. Hier ist einwenig Lesestoff dazu: http://www.schlittermann.de/doc/ssh.html
 
Das Übertragen per USB werde ich im Laufe des Tages mal ausprobieren.

Und warum lässt du auf deinem iMac nicht einfach ein Applescript (als Programm) im Hintergrund laufen, das je nach Bedarf die Einstellungen ändert und alle x Minuten erneut die Lage checkt?
Das ist eine gute Idee, aber in meinem Fall nicht die optimale Lösung. Ich werde mich trotzdem mal mit Narcolepsy auseinandersetzen.

In diesem Fall ist mir schon wichtig, dass alles über Smartphone und ggf. den Pi steuerbar ist. Ich kann so weitere Aktionen koppeln, wenn ich möchte. Beispiel: Wird NFC Tag X gescannt, führe per SSH auf dem Mac das Script Media-On aus; führe auf dem Pi das Script Media-On aus, welches Soundsystem und Projekter per Funksteckdose einschaltet. Via IFTTT könnte man ggf. sogar noch die Wohnzimmerlampe ausschalten (wenn ich die entsprechende Hardware wie Phillips Hue o.Ä. hätte - kann ja alles noch kommen).

BTW, den public key kannst du auch mit ssh auf den Server übertragen. Hier ist einwenig Lesestoff dazu: http://www.schlittermann.de/doc/ssh.html


Danke, die Seite beschreibt es wirklich gut. Hatte gedacht, der Key müsse auf dem Server erstellt und auf den Client gepusht werden. Wenn es auch andersherum geht, kann ich ja doch mit der virtuellen Maschine arbeiten und meine Tests durchführen :)
 
Ich habe die Publickeys nun erfolgreich auf Debian in der VirtualBox erstellt und per Termin / SSH auf den Mac gepusht.

Folgendes passiert nun:

Code:
$ ssh -v Ben@192.168.178.29
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 192.168.178.29 [192.168.178.29] port 22.
debug1: Connection established.
debug1: identity file /Users/Ben/.ssh/id_rsa type 1
debug1: identity file /Users/Ben/.ssh/id_rsa-cert type -1
debug1: identity file /Users/Ben/.ssh/id_dsa type 2
debug1: identity file /Users/Ben/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4+deb7u2
debug1: match: OpenSSH_6.0p1 Debian-4+deb7u2 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 8f:f4:6e:e4:be:75:a0:c1:a9:82:dd:33:1d:72:b2:a8
[COLOR=#008000]debug1: Host '192.168.178.29' is known and matches the RSA host key.[/COLOR]
debug1: Found key in /Users/Ben/.ssh/known_hosts:2
[COLOR=#008000]debug1: ssh_rsa_verify: signature correct[/COLOR]
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
[COLOR=#008000]debug1: Next authentication method: publickey[/COLOR]
debug1: Offering RSA public key: /Users/Ben/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Offering DSA public key: /Users/Ben/.ssh/id_dsa
[COLOR=#b22222]debug1: Authentications that can continue: publickey,password[/COLOR]
[COLOR=#b22222]debug1: Next authentication method: password[/COLOR]
Ben@192.168.178.29's password:

Weiterhin wird ein PW abgefragt. Die grün hinterlegten Stellen sehen für mich als Laien positiv aus. Warum wird am Ende allerdings trotzdem noch ein Passwort verlangt, wenn die Publickeys doch übereinstimmen? Naja, wir scheinen uns der Problemlösung auf jedem Fall zu nähern ;)
 
hast du auch den richtigen key auf dem ziel rechner in ~/.ssh/authorized_keys abgelegt?
 
Ja.
Im Log steht ja auch "matches the RSA host key" und "verify: signature correct". Ich generiere nochmal einen neuen Schlüssel und schicke den auf ein andere Gerät...
 
host key und dein user key sind doch verschiedene…
 
So, nun bin ich schon ein Stückchen weiter gekommen. Wenn ich mich über das Terminal unter Debian vorher als su anmelde, dann funktioniert die Authentifizierung ohne Passworteingabe über den Key. Ich kann die scpt-Dateien auf dem Mac nun über das Terminal in Debian ausführen.

Soweit, so gut. Aber: nun ist es ja immer noch notwendig, dass ich mich einmal als su anmelde. Kann ich das ebenfalls automatisieren?
 
warum hast den key nicht ohne passwort angelegt?
 
Der Key ist ohne PW angelegt worden. Es wird wieder nach dem Benutzerkennwort des Macs gefragt. Dies passiert nur, wenn ich auf Debian nicht root bin. Als root wird kein PW abgefragt.
 
Zurück
Oben Unten