Mein Weg zum Self-Hosting: Teil 1 - VPS und SSH Key

Diesen Artikel gibt es auch auf Englisch (English).
Wer mehrere kleine Web-Apps und Hobby-Projekte entwickelt, stösst schnell auf ein finanzielles Problem: bezahlt man für jedes Projekt ein separates Hosting oder einen PaaS-Dienst (Platform as a Service) wie Heroku oder Render, summieren sich die monatlichen Fixkosten sehr schnell.
Deshalb möchte ich für meine kleinen Projekte einen eigenen VPS haben, über den ich die volle Kontrolle habe und so viele Apps wie ich will laufen lassen kann ohne zusätzlichen Kosten (solange RAM und die CPU ausreichen 😉).
VPS Lite
Ich entscheide mich zum Starten für VPS Lite vom Schweizer Anbieter Infomaniak. VPS Lite steht für "Virtual Private Server Lite" und ist einfach eine kostengünstige, abgespeckte Version eines virtuellen privaten Servers. Ein weiterer Grund, warum ich diesen Anbieter gewählt habe ist, dass ihre Server zu 100% in eigenen Schweizer Rechenzentren gehostet werden.
Nach Abschluss der Bestellung muss ich mich nur noch für ein Betriebssystem entscheiden (ich habe mich für Ubuntu entschieden) und kurz abwarten bis die Installation durch ist.
SSH Key
Für die Verbindung zu meinem Server brauche ich einen SSH Key (ein sicheres Schlüsselpaar). Diesen erstelle ich über das Terminal (ich nutze einen Mac):
ssh-keygen -t ed25519 -C "vps" -f ~/.ssh/vps
ssh-keygen: steht für "SSH Key Generator" und startet das Programm um die Schlüssel zu erstellen
-t ed25519: hiermit wird der Verschlüsselungs-Algorithmus bestimmt
-C "vps": fügt ein Kommentar hinzu, damit ich später weiss, wofür die Schlüssel sind
-f ~/.ssh/vps: bestimmt den Ordner und den Dateinamen unter dem die Schlüssel gespeichert werden
Es werden zwei Dateien generiert:
vps(der private Schlüssel): das ist wie ein Hausschlüssel, der bleibt auf meinem eigenen Computer und niemand anders darf diesen Schlüssel jemals sehenvps.pub(der öffentliche Schlüssel): das ist das Schloss, das auf dem VPS hinterlegt wird
Jedes Mal, wenn ich mich einlogge, prüft der Server mit diesem Schloss, ob mein Computer den passenden privaten Schlüssel besitzt.
Der Infomaniak-Vorteil: normalerweise müsste man dieses Schloss jetzt mühsam per Befehl auf den Server hochladen. Infomaniak macht uns das Leben aber leichter, denn ich kann den Inhalt der vps.pub-Datei einfach kopieren und direkt im Web-Interface von Infomaniak beim Server hinterlegen. Das System baut das Schloss dann automatisch für mich ein.
Verbindung aufbauen
Im Terminal kann ich nun die Verbindung wie folgt herstellen:
ssh -i [key_path] [user]@[server_IP]
Das sieht in der Praxis beispielsweise so aus:
ssh -i ~/.ssh/vps ubuntu@123.45.67.89
ssh: startet das Protokoll für die sichere Verbinung
-i ~/.ssh/vps das -i steht für "Identity File", hier gibt man den Pfad zum privaten SSH-Schlüssel auf dem lokalen Computer an
ubuntu: der Standard-Benutzername, den Infomaniak für das gewählte Betriebssystem eingerichtet hat
123.45.67.89: die IP-Adresse des VPS Lite (diese findet man im Infomaniak Dashboard unter "Vorgehen beim Start")
Tipp für Faule 😉
Damit man diesen langen Befehl nicht jedes Mal eintippen muss, um sich mit dem Server zu verbinden, kann man Abkürzungen in einer lokalen Datei anlegen.
Mit diesem Befehl wird die Datei erstellt:
touch ~/.ssh/config
Und dann in der Datei folgendes hinterlegen:
Host vps
HostName 123.45.67.89
User ubuntu
IdentityFile ~/.ssh/vps
IdentitiesOnly yes
Wenn man sich mit einem Server verbindet, versucht SSH nacheinander alle Schlüssel aus, die in dem ~/.ssh-Ordner liegen oder im Hintergrund geladen sind, bis einer funktioniert. IdentitiesOnly yes verhindert das, indem sofort der eine richtige Schlüssel gesendet wird.
Jetzt kann ich mich im Terminal ganz einfach mit dem Befehl ssh vps mit meinem VPS verbinden.
Wie geht's weiter?
Die erste Verbindung steht! 🎉 Der Server läuft, ist aber noch komplett "nackt". Im nächsten Teil werde ich den Server absichern und eine Firewall einrichten.

