Forum: PC-Programmierung Mac: SSH-Session per Terminal mit einer CLI-Eingabe?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Wenn ich vom Mac aus eine SSH-Verbindung zu einem Raspberry öffnen will, 
öffne ich das Terminal und geb: "ssh pi@192.168.x.y" ein, dann werde ich 
noch zur Eingabe des Passworts aufgefordert und "ich bin drin".

Frage nun: Ist es auch möglich, den gesamten Anmeldevorgang mit EINEM 
einzeiligen Cli-Kommando auszuführen, also ohne nachträgliche 
Interaktion (Passworteingabe)?

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Frank E. schrieb:
> Frage nun: Ist es auch möglich, den gesamten Anmeldevorgang mit EINEM
> einzeiligen Cli-Kommando auszuführen, also ohne nachträgliche
> Interaktion (Passworteingabe)?

Ja, am besten mit publickey Authentifizierung.

Siehe ssh-keygen, ~/.ssh/config und ~/.ssh/authorized keys als 
Suchbegriffe, z.B. hier:
https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server

 Michael

: Bearbeitet durch User
von Stephan S. (uxdx)


Lesenswert?

Michael D. schrieb:
> Ja, am besten mit publickey Authentifizierung.

Aber auch da wird (einmalig je Sitzung) ein Passwort zur Freigabe des 
PublicKey verlangt. Es sei denn, das Passwort ist leer, aber das ist 
dann wieder unsicher.

von Michael D. (nospam2000)


Lesenswert?

Stephan S. schrieb:
> Aber auch da wird (einmalig je Sitzung) ein Passwort zur Freigabe des
> PublicKey verlangt. Es sei denn, das Passwort ist leer, aber das ist
> dann wieder unsicher.

ssh-agent ist dein Freund, dann musst du nur einmal dein Passwort 
eingegeben pro Rechner-Start. Das ist natürlich unsicherer wie es jedes 
mal einzugeben.

"sh-agent is a program to hold private keys used for public key 
authentication.  Through use of environment variables the agent can be 
located and automatically used for authentication when logging in to 
other machines using ssh(1)."

Was willst du:
 - Sicherheit
 - Bequemlichkeit

Such dir eines der beiden aus. "There is no free lunch"...

Oder wie es ein Kollege einmal formuliert hat:
"Security ist nicht dazu da einem das Leben einfacher zu machen"

 Michael

: Bearbeitet durch User
von Michael H. (mha1)


Lesenswert?

Das Passwort für den Private Key kann man bei MacOS mit ssh-add und den 
Optionen --apple-use-keychain und --apple-load-keychain in der Keychain 
speichern (alte MacOS Version -K und -A). Dann muss man das Passwort 
nicht jedesmal eingeben.

von Norbert (der_norbert)


Lesenswert?

Stephan S. schrieb:
> Aber auch da wird (einmalig je Sitzung) ein Passwort zur Freigabe des
> PublicKey verlangt. Es sei denn, das Passwort ist leer, aber das ist
> dann wieder unsicher.

So wie der ursprüngliche Wunsch es auch ist.
Nur: Oftmals wird ganz einfach keine Sicherheit gewollt und auch nicht 
gebraucht.

von Michael D. (nospam2000)


Lesenswert?

Norbert schrieb:
> So wie der ursprüngliche Wunsch es auch ist.
> Nur: Oftmals wird ganz einfach keine Sicherheit gewollt und auch nicht
> gebraucht.

Genau: die Sicherheit muss dem Schutzziel entsprechen. Wenn jemand 
meinen Wetterdatenlogger hackt, dann passiert da nichts außer dass ich 
den neu installieren muss.

@Frank E.
Du kannst auch einen Fido 2 Key verwenden wenn das für dich besser 
passt. Du solltest nur sicherstellen, dass bei einem Verlust oder Defekt 
du trotzdem wieder an das System rankommst ggf. über eine lokale 
console.

 Michael

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Es handelt sich um zwei Dutzend Raspis, die in einem Museum interaktive 
Exponate steuern. Die befinden sich alle in einem eigenen Subnet, das 
ich nur per VPN erreichen kann. Das Sicherheitsbedürfnis hält sich also 
in überschaubaren Grenzen.

Von dem Vorschlag mit public key habe ich schon gehört. Erfordert das 
zusätzliche Installationen auf den Raspis? Muss ich mich belesen ...

Also die bisherige Kommandozeile einfach irgendwie um einen Parameter 
mit Passwort erweitern geht nicht? Das wäre für mich am Einfachsten, 
auch wegen der Anzahl der Raspis.

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Frank E. schrieb:
> Erfordert das
> zusätzliche Installationen auf den Raspis?

Nein, du musst auf dem Server nur zwei Dinge machen:
1. für jeden User für den du dich einloggen willst das 
~/.ssh/authorized_keys file erzeugen (Achtung: permissions 600 
verwenden, d.h. besten das Kommando `umask 077` eingeben bevor du 
anfängst !)
1
umask 077
2
mkdir -p ~/.ssh
3
echo >~/.ssh/authorized_keys "deinPublicKeyAlsOneLineString"

2. den interactive Password Login deaktivieren nachdem du getestet hast, 
dass der public key login funktioniert.
Bei neueren Debian Distributionen muss du nur eine neue Datei anlegen 
wie mit dem Kommando unten. Bei älteren Installationen (wenn 
/etc/ssh/sshd_config.d nicht existiert) muss man die Datei 
/etc/ssh/sshd_config ändern (ggf. mit sed).
Dieses Kommando muss als root ausgeführt werden, d.h. wenn du noch nicht 
root bist dann `sudo -i` ausführen bevor du das eigentliche Kommando 
ausführts
1
echo >/etc/ssh/sshd_config.d/disable_password_auth.conf "PasswordAuthentication no"

> Also die bisherige Kommandozeile einfach irgendwie um einen Parameter
> mit Passwort erweitern geht nicht? Das wäre für mich am Einfachsten,
> auch wegen der Anzahl der Raspis.

Ich wüsste nicht wie.

Du musst dich ja nur ein einziges mal auf den Raspis einloggen und die 
Kommandos von oben ausführen.

Auf dem Client für jeden pi einen Eintrag in ~/.ssh/config erzeugen:
1
Host pi1
2
        HostName 192.168.143.1
3
        User root
4
        IdentityFile ~/.ssh/id_rsa
Die ip und den Filename muss du natürlich anpassen.

Danach kannst du z.B. folgende Kommandos ausführen:
1
ssh pi1 # interaktive Shell
2
ssh pi1 ls -l # listed files auf
3
scp localfile pi1:~/remotedir # kopiert Datei auf remote pi1

 Michael

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Frank E. schrieb:
> Es handelt sich um zwei Dutzend Raspis, die in einem Museum interaktive
> Exponate steuern. Die befinden sich alle in einem eigenen Subnet, das
> ich nur per VPN erreichen kann. Das Sicherheitsbedürfnis hält sich also
> in überschaubaren Grenzen.

Wenn das so ist, könntest Du ja einfach telnet statt ssh verwenden ...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Michael D. schrieb:
> Frank E. schrieb:
>> Erfordert das
>> zusätzliche Installationen auf den Raspis?
>
> Nein, du musst auf dem Server nur zwei Dinge machen:
> 1. für jeden User für den du dich einloggen willst das
> ~/.ssh/authorized_keys file erzeugen (Achtung: permissions 600 ...

Vielen Dank für deine Mühe. Ich werde das mal an einem quasi lokalen 
Raspi ausprobieren ...

von Andreas M. (amesser)


Lesenswert?

Zum verteilen des keys auf die raspi bietet sich das tool ssh-copy-id 
an. Die ersten drei Punkte wie hier beschrieben:

https://www.ssh.com/academy/ssh/copy-id

Wenn das Sicherheitsbedürfniss nicht allzu hoch ist, dann bei ssh-keygen 
das Passwort leer lassen. Must halt auf den Mac aufpassen, das keiner 
Zugriff drauf hat. Auf die Sicherheit im Netzwerk hat das keine 
Auswirkung.

von Le X. (lex_91)


Lesenswert?

Harald K. schrieb:
> Frank E. schrieb:
>> Es handelt sich um zwei Dutzend Raspis, die in einem Museum interaktive
>> Exponate steuern. Die befinden sich alle in einem eigenen Subnet, das
>> ich nur per VPN erreichen kann. Das Sicherheitsbedürfnis hält sich also
>> in überschaubaren Grenzen.
>
> Wenn das so ist, könntest Du ja einfach telnet statt ssh verwenden ...

Was ist denn an telnet einfacher?

von Le X. (lex_91)


Lesenswert?

Stephan S. schrieb:
> Michael D. schrieb:
>> Ja, am besten mit publickey Authentifizierung.
>
> Aber auch da wird (einmalig je Sitzung) ein Passwort zur Freigabe des
> PublicKey verlangt. Es sei denn, das Passwort ist leer, aber das ist
> dann wieder unsicher.

Du kannst auch einen Key ohne Passphrase erstellen.
Dann funktioniert es genau so wie es der TE sich wünscht.

von Harald K. (kirnbichler)


Lesenswert?

Le X. schrieb:
> Was ist denn an telnet einfacher?

Keine Verschlüsselung, d.h. der ganze Kryptographie-Zertifikatskrempel 
entfällt.

von Stephan S. (uxdx)


Lesenswert?

Harald K. schrieb:
> Le X. schrieb:
>> Was ist denn an telnet einfacher?
>
> Keine Verschlüsselung, d.h. der ganze Kryptographie-Zertifikatskrempel
> entfällt.

Und was ist daran einfacher? Sowohl der Raspi als auch der Max haben SSH 
im OS drin.

von Εrnst B. (ernst)


Lesenswert?

Harald K. schrieb:
> Keine Verschlüsselung, d.h. der ganze Kryptographie-Zertifikatskrempel
> entfällt.

Aber Passwort muss er trotzdem eintippen. Das entfällt bei SSH mit Key, 
wenn dieser nicht Passwortgeschützt ist.

Für etwas mehr Sicherheit lässt sich der SSH-Key am Mac, wie oben 
Michael geschrieben hatte, auch mit der MacOS-Keychain verbinden. Dann 
ist der SSH-Login mit einem Fingerabdrucks-Scan erledigt.

von Norbert (der_norbert)


Lesenswert?

Also ich muss zugeben das SSH ohne Passwort extrem kompliziert ist: ;-)
1
/tmp$ ssh-keygen -f schlüsseldatei
2
3
Generating public/private rsa key pair.
4
Enter passphrase (empty for no passphrase): 
5
Enter same passphrase again: 
6
Your identification has been saved in schlüsseldatei
7
Your public key has been saved in schlüsseldatei.pub
8
The key fingerprint is:
9
SHA256:QiUxJb06uUG8DuOs32XTy4Bb0F0LfeieM76mkd19Zuk norbert@Entwicklung
10
The key's randomart image is:
11
+---[RSA 3072]----+
12
|      =+o        |
13
|       =.  . .   |
14
|     ..  .. + .  |
15
|     .o... + o   |
16
|     .o+S . o    |
17
|    o *+ . + o ..|
18
|   o +.+* + * ..=|
19
|    o.o= + +.o.o.|
20
|  .o. o   +oo. E |
21
+----[SHA256]-----+
22
23
/tmp$ l schlüsseldatei*
24
-rw------- 1 norbert norbert 2610  2. Jan 11:47 schlüsseldatei
25
-rw------- 1 norbert norbert  573  2. Jan 11:47 schlüsseldatei.pub

von Stephan S. (uxdx)


Lesenswert?

Norbert schrieb:
1
ssh-keygen -f schlüsseldatei

Das erzeugt ein RSA-Schlüsselpaar mit einer Schlüssellänge von 3072 bit, 
das ist z.Zt. noch ok, aber nicht zukunftsträchtig. Besser wäre ein 
Schlüssel mit einer elliptischen Kurve, da ist z.Zt state-of-the-art 
ed25519
1
ssh-keygen -t ed25519 -a 420 -f schluesseldatei

von Norbert (der_norbert)


Lesenswert?

Stephan S. schrieb:
> Das erzeugt ein RSA-Schlüsselpaar mit einer Schlüssellänge von 3072 bit,
> das ist z.Zt. noch ok, aber nicht zukunftsträchtig.

Grundsätzlich stimme ich dir vollkommen zu, jedoch:

Frank E. schrieb:
> Es handelt sich um zwei Dutzend Raspis, die in einem Museum interaktive
> Exponate steuern. Die befinden sich alle in einem eigenen Subnet, das
> ich nur per VPN erreichen kann. Das Sicherheitsbedürfnis hält sich also
> in überschaubaren Grenzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.