SSH ohne Passwort

Aus MattWiki

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-keygen 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. 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.pub in Zwischenablage kopieren
  • Auf Zielmaschine einloggen
  • Inhalt aus Zwischenablage ans Ende der Datei ~/.ssh/authorized_keys 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:

$ 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:

  1. Register: Fortgeschritten → Laufzeitumgebung für GNOME beim Starten laden
  2. Register: Automatisch gestartete Anwendungen → GNOME-Schlüsselbunddienst: Sicherheitsdienst
  3. 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://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:

  1. Use Pageant from Putty → Requires to enter passphrase each time
  2. 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