SSH ohne Passwort: Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge)  | 
				Matt (Diskussion | Beiträge)  | 
				||
| (17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
Voraussetzung ist ein passwortgeschützter SSH-Zugriff zur Server-Maschine.  | Voraussetzung ist ein passwortgeschützter SSH-Zugriff zur Server-Maschine.  | ||
== Schlüssel erstellen ==  | |||
  $ ssh-keygen   |   $ ssh-keygen         # Neues RSA-Schlüsselpaar in ~/.ssh/id_rsa und ~/.ssh/id_rsa.pub anlegen  | ||
 $ ssh-keygen -t ed25519    #ed25519 ist moderner  | |||
https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54  | |||
'''Anmerkungen'''  | '''Anmerkungen'''  | ||
* Passwortabfrage von <code>ssh-keygen</code> kann leer gelassen werden, wenn es nur einen User in der Root-Gruppe gibt  | * Passwortabfrage von <code>ssh-keygen</code> kann leer gelassen werden, wenn es nur einen User in der Root-Gruppe gibt  | ||
* Sind mehrere Root-User vorhanden, oder handelt es sich nicht um einen Root-User, ist dies ein Sicherheitsrisiko. In diesem Falle sollte ein Passwort verwendet werden. Dieses kann im Schlüsselbund gedached werden. Vgl. [[SSH ohne Passwort|Passwort für Schlüssel im Schlüsselbund cachen]]  | |||
| Zeile 35: | Zeile 41: | ||
  +-----------------+  |   +-----------------+  | ||
== Schlüssel zum Remotehost kopieren ==  | |||
=== Per ssh-copy-id ===  | |||
  $ ssh-copy-id user@remotehost.tld  |   $ ssh-copy-id user@remotehost.tld  | ||
  $ ssh-copy-id -i <id_rsa.pub> -p <port> user@remotehost.tld  |   $ ssh-copy-id -i <id_rsa.pub> -p <port> user@remotehost.tld  | ||
| Zeile 48: | Zeile 55: | ||
  $ less ~/.ssh/authorized_keys  |   $ less ~/.ssh/authorized_keys  | ||
=== Passwort für Schlüssel cachen   | === Manuell ===  | ||
* Öffentlichen Schlüssel aus <code>~/.ssh/id_rsa.pub</code> in Zwischenablage kopieren  | |||
* Auf Zielmaschine einloggen  | |||
* Inhalt aus Zwischenablage ans Ende der Datei <code>~/.ssh/authorized_keys</code> anfügen  | |||
== Passwort für Schlüssel im Schlüsselbund cachen ==  | |||
Wenn der Schlüssel mit einem Passwort gesichert wurde, kann man mit folgendem Programm das Passwort für den Schlüssel puffern für eine automatische Eingabe:  | Wenn der Schlüssel mit einem Passwort gesichert wurde, kann man mit folgendem Programm das Passwort für den Schlüssel puffern für eine automatische Eingabe:  | ||
| Zeile 55: | Zeile 67: | ||
Alternativ GNOME Keyring verwenden.  | Alternativ GNOME Keyring verwenden.  | ||
Für XFCE muss dieser   | Für XFCE muss dieser unter "Sitzung und Startverhalten" (Startmenü → Einstellungen) aktiviert werden. Dazu folgende Optionen aktivieren:  | ||
# Fortgeschritten → Laufzeitumgebung für GNOME beim Starten laden  | # Register: Fortgeschritten → Laufzeitumgebung für GNOME beim Starten laden  | ||
# Automatisch gestartete Anwendungen → GNOME-Schlüsselbunddienst: Sicherheitsdienst  | # Register: Automatisch gestartete Anwendungen → GNOME-Schlüsselbunddienst: Sicherheitsdienst  | ||
# Automatisch gestartete Anwendungen → GNOME-Schlüsselbunddienst: SSH-Agent  | # Register: Automatisch gestartete Anwendungen → GNOME-Schlüsselbunddienst: SSH-Agent  | ||
== Known Host entfernen ==  | |||
Alte Hostnamen können aus den known_hosts entfernt werden mit:  | Alte Hostnamen können aus den known_hosts entfernt werden mit:  | ||
  ssh-keygen -f "path-to-known_hosts" -R <hostname>    |   ssh-keygen -f "path-to-known_hosts" -R <hostname>    | ||
  ssh-keygen -f "path-to-known_hosts" -R <ipaddress>  |   ssh-keygen -f "path-to-known_hosts" -R <ipaddress>  | ||
== Fingerprints und Schlüssellänge herausfinden ==  | |||
Beim ersten Verbinden per SSH-Client mit einem SSH-Server kommt die Warnung, dass der Fingerprint des Servers unbekannt sei.  | |||
Der Fingerprint des Servers kann Serverseitig anhand der öffentlichen Schlüssel (*.pub) folgendermaßen überprüft werden:  | |||
 ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub  | |||
 ssh-keygen -lf /etc/ssh/ssh_host_dsa_key.pub  | |||
 ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub  | |||
== Weitere Infos ==  | |||
https://devops.ionos.com/tutorials/use-ssh-keys-with-putty-on-windows/  | |||
https://interworks.com/blog/2021/09/15/setting-up-ssh-agent-in-windows-for-passwordless-git-authentication/  | |||
https://superuser.com/questions/1433917/windows-10-ssh-client-password-less-access  | |||
https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement  | |||
== Windows 11 OpenSSH Password Less Authentication ==  | |||
Activate ''OpenSSH Authentication Agent'' for automatic start:  | |||
 # Set the sshd service to be started automatically  | |||
 Get-Service ssh-agent | Set-Service -StartupType Automatic  | |||
 # Start the service  | |||
 Start-Service ssh-agent  | |||
 # This should return a status of Running  | |||
 Get-Service ssh-agent  | |||
Add Passphrase of Private Key to OpenSSH Agent:  | |||
 # Now load your key files into ssh-agent  | |||
 ssh-add $env:USERPROFILE\.ssh\id_ed25519  | |||
Now pubkey-login from command line should work.  | |||
To enable Putty using OpenSSH Authentication Agent two methods are possible:  | |||
# Use Pageant from Putty → Requires to enter passphrase each time  | |||
# Proxy Pageant requests to the Windows OpenSSH agent (from Microsoft), enabling applications that only support Pageant to use openssh (and therefore its passphrase storage):  | |||
https://github.com/ndbeals/winssh-pageant  | |||
[[Category:Kryptographie]]  | [[Category:Kryptographie]]  | ||
[[Kategorie:Terminal]]  | |||
Aktuelle Version vom 16. Oktober 2023, 22:41 Uhr
Die nachfolgenden Schritte werden von der Client-Maschine aus ausgeführt.
Voraussetzung ist ein passwortgeschützter SSH-Zugriff zur Server-Maschine.
Schlüssel erstellen
$ ssh-keygen # Neues RSA-Schlüsselpaar in ~/.ssh/id_rsa und ~/.ssh/id_rsa.pub anlegen $ ssh-keygen -t ed25519 #ed25519 ist moderner
https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54
Anmerkungen
- Passwortabfrage von 
ssh-keygenkann leer gelassen werden, wenn es nur einen User in der Root-Gruppe gibt - Sind mehrere Root-User vorhanden, oder handelt es sich nicht um einen Root-User, ist dies ein Sicherheitsrisiko. In diesem Falle sollte ein Passwort verwendet werden. Dieses kann im Schlüsselbund gedached werden. Vgl. Passwort für Schlüssel im Schlüsselbund cachen
 
Ergebnis:
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: b2:ad:a0:80:85:ad:6c:16:bd:1c:e7:63:4f:a0:00:15 user@host The key's randomart image is: +--[ RSA 2048]----+ | E. | | . | |. | |.o. | |.ooo o. S | |oo+ * .+ | |++ +.+... | |o. ...+. | | . .. | +-----------------+
Schlüssel zum Remotehost kopieren
Per ssh-copy-id
$ ssh-copy-id user@remotehost.tld $ ssh-copy-id -i <id_rsa.pub> -p <port> user@remotehost.tld
Einloggen ausprobieren
$ ssh user@remotehost.tld
Überprüfen, welche Schlüssel hinterlegt sind, um auszuschließen, dass weitere Schlüssel Zugriff haben:
$ less ~/.ssh/authorized_keys
Manuell
- Öffentlichen Schlüssel aus 
~/.ssh/id_rsa.pubin Zwischenablage kopieren - Auf Zielmaschine einloggen
 - Inhalt aus Zwischenablage ans Ende der Datei 
~/.ssh/authorized_keysanfügen 
Passwort für Schlüssel im Schlüsselbund cachen
Wenn der Schlüssel mit einem Passwort gesichert wurde, kann man mit folgendem Programm das Passwort für den Schlüssel puffern für eine automatische Eingabe:
$ ssh-add -t 3600
Alternativ GNOME Keyring verwenden.
Für XFCE muss dieser unter "Sitzung und Startverhalten" (Startmenü → Einstellungen) aktiviert werden. Dazu folgende Optionen aktivieren:
- Register: Fortgeschritten → Laufzeitumgebung für GNOME beim Starten laden
 - Register: Automatisch gestartete Anwendungen → GNOME-Schlüsselbunddienst: Sicherheitsdienst
 - Register: Automatisch gestartete Anwendungen → GNOME-Schlüsselbunddienst: SSH-Agent
 
Known Host entfernen
Alte Hostnamen können aus den known_hosts entfernt werden mit:
ssh-keygen -f "path-to-known_hosts" -R <hostname> ssh-keygen -f "path-to-known_hosts" -R <ipaddress>
Fingerprints und Schlüssellänge herausfinden
Beim ersten Verbinden per SSH-Client mit einem SSH-Server kommt die Warnung, dass der Fingerprint des Servers unbekannt sei.
Der Fingerprint des Servers kann Serverseitig anhand der öffentlichen Schlüssel (*.pub) folgendermaßen überprüft werden:
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub ssh-keygen -lf /etc/ssh/ssh_host_dsa_key.pub ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
Weitere Infos
https://devops.ionos.com/tutorials/use-ssh-keys-with-putty-on-windows/
https://superuser.com/questions/1433917/windows-10-ssh-client-password-less-access
https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement
Windows 11 OpenSSH Password Less Authentication
Activate OpenSSH Authentication Agent for automatic start:
# Set the sshd service to be started automatically Get-Service ssh-agent | Set-Service -StartupType Automatic # Start the service Start-Service ssh-agent # This should return a status of Running Get-Service ssh-agent
Add Passphrase of Private Key to OpenSSH Agent:
# Now load your key files into ssh-agent ssh-add $env:USERPROFILE\.ssh\id_ed25519
Now pubkey-login from command line should work.
To enable Putty using OpenSSH Authentication Agent two methods are possible:
- Use Pageant from Putty → Requires to enter passphrase each time
 - Proxy Pageant requests to the Windows OpenSSH agent (from Microsoft), enabling applications that only support Pageant to use openssh (and therefore its passphrase storage):
 
