SSH ohne Passwort

Dauerd das Passwort eingeben – ein Graus! Es geht auch ohne! scp und rsync werden es dir danken.

Voraussetzungen

Damit man sich ohne Passwort am Zielrechner mit ssh einloggen kann, muß zuerst der ssh-Server konfiguriert sein.

vi /etc/ssh/sshd_config
...
PermitRootLogin without-password
...
PasswordAuthentication no
ChallengeResponseAuthentication no
...
UsePAM yes             # Login mit Passwort und/oder Key
#UsePAM no             # Login nur mehr mit Key möglich
service sshd restart

Bei Problemen beim Einloggen den Verbose-Modus einschalten

ssh -v user@ssh.serv.er

In Linux ist das passwortlose Einloggen leichter zu konfigurieren als in Windows, deswegen beginnen wir mit Linux.

Linux

Zuerst erzeugen wir ein RSA-Schlüsselpaar mit 4096 Bit (2048 Bit sind heute zu wenig)

ssh-keygen -t rsa -b 4096

Wenn der Keygenerator nach einem Passwort frägt, frei lassen.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/bigboss/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/bigboss/.ssh/id_rsa.
Your public key has been saved in /home/bigboss/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:sI3TBUNYERB3SWWGzw3y0XWPQnjSV79zLCPAdNQb/6Y bigboss@linux
The key's randomart image is:
+---[RSA 4096]----+
|      o*O+o**oo++|
|      .. +**=.oo=|
|        . .B+=. *|
|        * . +o.oo|
|        + S . oo+|
|           . . o=|
|               o |
|               E |
|                 |
+----[SHA256]-----+

Der Keygenerator hat jetzt die beiden Schlüssel im Ordner ~/.ssh erstellt

  • id_rsa ist der private Schlüssel
  • id_rsa.pub ist der öffentliche Schlüssel

Jetzt gilt es, den öffentlichen Schlüssel auf den Zielrechner zu übertragen. Entweder durch manuelles Anhängen an die Datei ~/.ssh/authorized_keys am Zielrechner mittels cat oder mit dem Werkzeug ssh-copy-id.

ssh-copy-id root@linux.lan
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/bigboss/.ssh/id_rsa.pub"
The authenticity of host 'linux.lan (192.168.0.9)' can't be established.
RSA key fingerprint is SHA256:sI3TBUNYERB3SWWGzw3y0XWPQnjSV79zLCPAdNQb/6Y.
Are you sure you want to continue connecting (yes/no)? ssh-copy-id root@linux.lan
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/bigboss/.ssh/id_rsa.pub"
The authenticity of host 'linux.lan (192.168.0.9)' can't be established.
RSA key fingerprint is SHA256:sI3TBUNYERB3SWWGzw3y0XWPQnjSV79zLCPAdNQb/6Y.
Are you sure you want to continue connecting (yes/no)?
Please type 'yes' or 'no': yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@linux.lan's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@linux.lan'"
and check to make sure that only the key(s) you wanted were added.

Das war es auch schon. Ab jetzt kann sich root am Zielrechner ohne Passwort einloggen. rsyncscp und sftp funktioniert jetzt ebenfalls ohne Passwort.

~/.ssh/config

Anstatt jedes Mal einen speziellen Private Key mit dem Parameter -i anzugeben

ssh -i ~/.ssh/irgendwas.key sepp@depp.lan -p 57311

kann man dies in der config-Datei tun

vi ~/.ssh/config
Host depp
     HostName depp.lan
     Port 57311
     User pepp
     IdentityFile ~/.ssh/irgendwas.key

Ab jetzt kann man sich einloggen mit dem Kurzbefehl

ssh depp

Windows

In Windows ist die Sache etwas komplizierter, aber zu schaffen. Es kommt das allseits bekannte Programm PuTTY zum Einsatz. Falls noch nicht installiert, hier downloaden:

Zuerst muß mit puttygen.exe ein Schlüsselpaar erstellt werden.

Wir erstellen einen SSH-2 RSA-Key mit mindestens 4096 bit.

Nach einer kleinen Mausorgie ist das Schlüsselpaar erstellt und im Feld „Key“ ist der Public Key, der am Zielrechner an ~/.ssh/authorized_keys angehängt werden soll. Achtung auf die Fußangel: In dieser Datei muß jeder Key in einer einzigen Zeile eingetragen werden. Also am besten gleich vom PuTTY Key Generator den Public Key kopieren und am Zielrechner einfügen.

Die RSA Public Keys beginnen alle mit AAAAB3NzaC1yc2E. Dies ist durch RFC4253 definiert.

Die Datei soll in etwa so aussehen:

comment "ich@Putty 19.03.2018"
ssh-rsa AAAAB3NzaC1yc2E... lange Wurst mit blabla ...bMU=

ssh-rsa AAAAB3NzaC1yc2E... längere Wurst mit blabla ...cNV== du@Putty

Wer nicht auf die Fußangel achtet, bekommt von Putty die Fehlermeldung

No supported authentication methods available

Nachdem der Public Key und der Private Key gespeichert wurden, das Programm pageant.exe aus dem Putty-Ordner aufrufen. Pageant (PuTTY authentication Agent) ist ein Programm zur Verwaltung von Keys für PuTTY. Nach dem Aufruf findet man es in der Taskleiste

Man muß nur noch den soeben erstellten Key adden (die PPK-Datei) und schon kann man sich ohne Passwort am ssh-Server mit PuTTY einloggen, vorausgesetzt der ssh-Server ist richtig konfiguriert.

So sieht ein korrekter Login mit PuTTY aus:

Android

Hier hat sich die kostenlose, werbefreie App JuiceSSH aus dem Google Play Store bewährt.

Im Reiter „Identities“ entweder ein neues Schlüsselpaar erstellen oder eines importieren. Das erzeugte Schlüsselpaar mit Long Press auf die Identität exportieren und den Public Key zur Datei authorized_keys am ssh-Server hinzufügen.