SSH ist das zentrale Werkzeug für das sichere Deployment von Anwendungen auf Linux-Servern. Durch die Verwendung von SSH-Keys, Jump Hosts und eingeschränkten Shells kann der Zugriff auf Server kontrolliert, automatisierte Deployments abgesichert und Angriffsflächen minimiert werden. In diesem Leitfaden lernen Einsteiger, IT-Studierende und Junior Network Engineers, wie SSH-Deployment sicher gestaltet wird.
SSH-Key-Paare erstellen
Die Authentifizierung über SSH-Keys ist deutlich sicherer als Passwörter. Ein Key-Paar besteht aus einem privaten und einem öffentlichen Schlüssel.
# Lokales Key-Paar erstellen
ssh-keygen -t rsa -b 4096 -f ~/.ssh/deploy_key -C "deploy@example.com"
# Optional Passphrase für den privaten Schlüssel setzen
# ~/.ssh/deploy_key = privater Schlüssel
# ~/.ssh/deploy_key.pub = öffentlicher Schlüssel
Public Key auf Zielserver verteilen
Der öffentliche Schlüssel wird auf dem Server hinterlegt, um den Login zu ermöglichen.
# Public Key kopieren
ssh-copy-id -i ~/.ssh/deploy_key.pub user@server.example.com
# Alternativ manuell einfügen
cat ~/.ssh/deploy_key.pub | ssh user@server.example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Jump Host einrichten
Ein Jump Host dient als Zwischenserver, über den Zugriffe auf interne Systeme erfolgen. Dies erhöht die Sicherheit durch Netzwerksegmentierung.
# SSH-Konfiguration (~/.ssh/config)
Host jump
HostName jump.example.com
User deploy
IdentityFile ~/.ssh/deploy_key
Host internal-server
HostName 10.0.0.10
User deploy
ProxyJump jump
Restricted Shell (rbash) für Deploy-User
Eine eingeschränkte Shell limitiert die Befehle, die ein User ausführen kann. So werden Server sicherer, da nur Deploy-Skripte ausgeführt werden können.
# Benutzer mit Restricted Shell anlegen
sudo useradd -m -s /bin/rbash deploy
# Deploy-Skripte in eigenes Verzeichnis legen
mkdir -p /home/deploy/bin
chown deploy:deploy /home/deploy/bin
# PATH anpassen
echo 'export PATH=$HOME/bin' >> /home/deploy/.bash_profile
SSH Konfigurationshärtung
- Passwort-Login deaktivieren:
PasswordAuthentication no - Root-Login verbieten:
PermitRootLogin no - Maximale Login-Versuche beschränken:
MaxAuthTries 3 - Port ändern und Fail2ban integrieren
- Idle Timeout setzen:
ClientAliveInterval 300,ClientAliveCountMax 2
Automatisierte Deployments
SSH-Keys und Restricted Shells ermöglichen automatisierte Deployments via CI/CD-Tools wie GitLab CI oder Jenkins.
# Beispiel GitLab CI SSH-Verbindung
ssh -i ~/.ssh/deploy_key deploy@internal-server "cd /var/www/app && git pull"
Netzwerk- und Subnetzplanung
Jump Hosts sollten in einem separaten Netzwerksegment liegen, interne Server nur über interne IPs erreichbar.
IPv4 Subnetz
<math>
Jump-IP = 192.168.420.10/24
Subnetzadresse = 192.168.420.10 & 255.255.255.0 = 192.168.420.0
Broadcastadresse = 192.168.420.0 | ~255.255.255.0 = 192.168.420.255
Internal-Server-IP = 10.0.0.10/24
Subnetzadresse = 10.0.0.0
Broadcastadresse = 10.0.0.255
</math>
IPv6 Subnetz
<math>
Jump-IP = 2001:db8:abcd:420::10/64
Subnetzadresse = 2001:db8:abcd:420::0
Broadcastadresse = 2001:db8:abcd:420:ffff:ffff:ffff:ffff
Internal-Server-IP = fd00:abcd:420::10/64
Subnetzadresse = fd00:abcd:420::0
Broadcastadresse = fd00:abcd:420:ffff:ffff:ffff:ffff
</math>
Best Practices
- SSH-Keys statt Passwörter für Deployment verwenden
- Keys mit starker Passphrase versehen
- Jump Hosts als zentrale Einstiegspunkte nutzen
- Restricted Shells für Deploy-User einsetzen
- Root-Login deaktivieren
- Port und Authentifizierungsrichtlinien absichern
- Fail2ban oder ähnliche Schutzmechanismen integrieren
- Deploy-Logs überwachen
- CI/CD nur über gesicherte Kanäle verbinden
- Subnetze und Firewalls strikt segmentieren und dokumentieren
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

