Im Standard kann man sich bei einer SSH-Verbindung unter Ubuntu als root-User per Passwort authentifizieren. Da der Server dadurch leicht attackiert werden kann, sollte dies geändert werden. Eine empfehlenswerte Alternative stellt die Authentifizierung per Zertifikat dar.
Dieser Artikel beschreibt, wie man:
- Die SSH-Authentifzierung per Passwort deaktiviert
- Einen neuen Benutzer anlegt und diesen zum sudo-User macht, über den dann administrative Tätigkeiten durchgeführt werden können
- Den SSH-Zugriff für den neu angelegten User auf Basis von Zertifikaten ermöglicht
User anlegen
Zunächst muss der User angelegt werden. Durch die folgenden Befehle wird der User my_user
angelegt:
adduser my_user
Anschließend muss der User zur sudo-Gruppe hinzugefügt werden:
usermod -a -G sudo my_user
Um den User per SSH-Key zu authentifizieren zu können, muss auf dem Client (korrekt vorhandene Zertifikate vorausgesetzt) folgender Befehl ausgeführt werden:
ssh-copy-id my_user@my_server.example.com
my_server.example.com
muss natürlich an den eigenen Servernamen angepasst werden.
Passwort-Authentifizierung und Root-Login deaktivieren
Im nächsten Schritt wird das root-Login via SSH deaktiviert. Dazu die Datei /etc/ssh/sshd_config
wie folgt anpassen:
nano /etc/ssh/sshd_config
Durch PermitRootLogin
kann der Zugriff für den root-User deaktiviert werden:
PermitRootLogin no
Im nächsten Schritt noch PasswordAuthentication
anpassen:
PasswordAuthentication no
Anschließend SSH neu starten.
sudo service ssh restart
Hinweis: Teste nun in einer separaten Session, ob alles wie gewünscht funktioniert. Schließe die aktuelle, bestehende Session erst, wenn alles funktioniert. Im Fehlerfall kannst du über die bestehende Session noch Korrekturen durchführen!
Wenn alles wie gewünscht funktioniert, kann per exit
die Session beendet werden. Der Server ist nun wieder etwas sicherer.
Der Befehl, um dich zukünftig auf den Server zu verbinden, lautet:
ssh my_user@my_server.example.com