Secure Shell (SSH) Public Key Authentication (PKA)
Der direkte Zugriff aus dem Internet per SSH ist nur mehr in Ausnahmefällen
auf
Antrag mit Zustimmung
der OE-Leitung möglich (dann sollte aber unbedingt eine 2FA-Lösung
verwendet werden), für den Zugriff aus dem
VPN-Netz
reicht ein
Freischaltungsantrag
durch die EDV-Beauftragten.
Wir raten dringend dazu nur per VPN und mit
SSH-PKA zu arbeiten:
- VPN verhindert, dass der SSH-Server aus dem Internet direkt angegriffen
werden kann,
- die VPN-Lösung ist gegen Phishing mit einem
2. Faktor abgesichert und
- Public Key Authentication (PKA) verringert die Gefahr, dass der
Server aus dem Netz der TU Graz angegriffen werden kann, da eine Anmeldung
nur mit dem (passwortgeschützten) public Key möglich ist.
Public Key Authentication (PKA)
Die PKA (oft auch nur
SSH-Key genannt) erfordert, dass ein
Schlüsselpaar erstellt wird. Der (mit einem Passwort geschützte)
private Schlüssel (
private key) verbleibt dabei auf den Geräten
des Users (SSH-Client), der öffentliche Schlüssel (
public key)
wird am SSH-Server abgelegt.
Um sich am Server anmelden zu können, braucht man dann den privaten
Schlüssel und das zugehörige Kennwort (die
Passphrase),
mit dem er verschlüsselt wurde.
SSH-Client
- Öffnen Sie auf Ihrem SSH-Client (dem Rechner, mit dem Sie sich
am SSH-Server anmelden wollen) ein Terminal-Fenster (Windows
z. B. Powershell).
- Geben Sie folgenden Befehl ein, um einen
RSA-Krypto-Schlüssel
der Länge 4096 Bit zu erstellen:
ssh-keygen -t rsa -b 4096
Sollte das unter Linux nicht funktionieren, müssen Sie erst
OpenSSH installieren.
- Geben Sie - wenn Sie wollen - einen Dateinamen ein, sonst wird
der Defaultname im Directory .ssh im Homeverzeichnis
verwendet.
- Geben Sie eine „Passphrase“ ein (das Kennwort, mit dem
Ihr privater Schlüssel geschützt wird).
Sie können hier auch nichts eingeben (z. B. für
Machine-to-Machine-Kommunikation), das sollten Sie aber nur
machen, wenn Sie wissen, was Sie tun.
Geben Sie zur Bestätigung die Passphrase ein 2. Mal ein.
- Sie haben nun im Directory .ssh in Ihrem Homeverzeichnis
(ausser Sie haben oben optional ein anderes Directory angegeben)
2 Files:
- id_rsa = Ihr privater Schlüssel
- id_rsa.pub = Ihr öffentlicher Schlüssel
- Sie müssen nun den öffentlichen Schlüssel vom
SSH-Client zum SSH-Server übertragen, dazu gibt es mehrere
Möglichkeiten:
- Händische Übertragung:
Melden Sie sich am SSH-Server
server.tugraz.at
mit Benutzername und Kennwort an:
ssh username@server.tugraz.at
Wechseln Sie am Server ins Directory .ssh und tragen Sie
den Inhalt Ihres öffentlichen Schlüssels z. B. mit
Copy&Paste in die Datei authorized_keys ein.
- Durch Aufruf von
ssh-copy-id username@server.tugraz.at
bzw.
ssh-copy-id -i /pfad/name.pub username@server.tugraz.at
(falls Sie oben einen anderen Pfad verwendet haben)
wird der öffentliche Schlüssel ebenfalls in die Datei
authorized_keys am SSH-Server eingetragen.
- Testen Sie nun in einem weiteren Fenster, ob die Anmeldung mit dem
Schlüssel funktioniert:
ssh username@server.tugraz.at
bzw.
ssh -i /pfad/name.pub username@server.tugraz.at
Sie sollten nicht mehr nach dem Kennwort am Server gefragt werden,
sondern nach der Passphrase, die Sie verwendet haben, um Ihren privaten
Schlüssel zu schützen.
Sollte es Probleme geben, überprüfen Sie die Zugriffsrechte:
Sowohl am SSH-Server als auch am SSH-Client sollte das Directory
.ssh (bzw. /pfad/) die
Rechte 700 (rwx------) haben und die Files die Rechte
600 (rw-------).
Wenn Sie den privaten Schlüssel auf andere Rechner übertragen,
dann können Sie sich dann auch von diesen SSH-Clients aus
anmelden, ohne das Ganze wieder durchführen zu müssen.
SSH-Server
Der SSH-Server sollte so konfiguriert sein, dass er nur noch die Anmeldung
mit PKA akzeptiert:
- Wenn Sie die entsprechenden Rechte haben, wechseln Sie ins Directory
/etc/ssh/.
- Öffnen Sie dort die Datei sshd_config.
- Suchen Sie nach den folgenden Zeilen:
PasswordAuthentication
ChallengeResponseAuthentication
usePAM
- Falls diese auskommentiert sind (#), entfernen Sie die
Kommentar-Zeichen #.
Falls es keine solche Zeilen gibt, fügen Sie sie ein.
- Setzen Sie die Werte auf no.
Die Zeilen sollte nun folgendermaßen aussehen:
PasswordAuthentication no
ChallengeResponseAuthentication no
usePAM no
- Starten Sie den SSH-Daemon neu, in vielen Distributionen z. B.
durch systemctl restart ssh