Beim Public-Key Verfahren ist ein asymetrisches Verschlüsselungsverfahren. Es existieren 2 Schlüssel, ein privater Schlüssel und ein öffentlicher Schlüssel. Der private Schlüssel muss, wie der Name schon sagt, geheim gehalten werden.
Der öffentliche Schlüssel wird auf den entfernten Server geladen.
1. Erstellen eines Public/Private-Keys
ssh-keygen -t rsa -b 2048 -v
Mit diesem Befehl wird ein 2048 bit großer RSA-Schlüssel generiert.
Der Paramenter -v
steht dabei für „verbose“ (Fragen werden gestellt).
Als Filename gebe ich hier exemplarisch „schluessel“ ein. Als 2 Frage wird nach einem Passwort gefragt. Möchte man den privaten Schlüssel zusätzlich mit einem Passwort schützen, sollte man hier zusätzlich ein Passwort vergeben.
Es wurden 2 Files generiert.
- schluessel (ohne Dateiendung)
- schluessel.pub
schluessel ohne Dateiendung ist der Private-Key und darf auf keinen Fall an die Öffentlichkeit gelangen.
2. Hochladen des öffentlichen Schlüssels auf den Server
Um den öffentlichen Schlüssel auf den Server zu laden sind ein paar Schritte notwendig.
Unter Mac ist der Befehl ssh-copy-id
leider nicht vorhanden. Deswegen installiere ich ihn über Homebrew
brew install ssh-copy-id
Der Befehl ändert die Rechte des entfernten Verzeichnisses ~/.ssh
und ~/.ssh/authorized_keys
indem es die Gruppen-Schreibrechte entfernt, da man sich sonst nicht einloggen könnte.
Die -i Option besagt, dass der Schlüssel verwendet werden soll.
ssh-copy-id -i ~/schluessel.pub {benutzername}@{server} -p 22
3. Testen der Verbindung
Anstatt das Passwort eingeben zu müssen sollte es nun mit folgender Anweisung funktionieren:
ssh -i ~/schluessel {benutzername}@{server}
Durch Hinzufügen des privaten Schlüssels mittels IdentityFile
in der ~/.ssh/config
reicht nun ein einfaches ssh server
um eine Verbindung mit dem Server herzustellen.