SSH & SCP
Ziel
In diesem Hands-On lernen Sie die Grundlagen von SSH und SCP an einem isolierten Zielserver, der als Docker-Container läuft. Sie werden:
- sich per SSH einloggen (Passwort)
- das Passwort ändern
- eine SSH-Konfigurationsdatei einrichten
- SSH-Keys lokal erzeugen
- den Public Key auf dem Zielserver einrichten
- per Key einloggen
- Passwort-Login deaktivieren
- Dateien per SCP hin- und zurückkopieren
Hilfsmittel
- Nutzen Sie das Cheatsheet für schnelle Referenzen: SSH & SCP Cheatsheet.
Vorbereitung - Zielserver als Docker-Container starten
In dieser Vorbereitung bauen und starten Sie einen Ubuntu-Container mit SSH-Server. Der Container ist Ihr Zielsystem für alle weiteren Aufgaben. Sie müssen die Schritte hier nicht im Detail verstehen, da dies nur die Vorbereitung ist. Es geht darum, einen SSH-Server zu haben, mit dem Sie üben können.
Aufgabe V1 - Arbeitsordner anlegen
- Erstellen Sie im Workspace einen neuen Ordner
ssh-scp-labund wechseln Sie in diesen:
cd /home/coder/workspace
mkdir -p ssh-scp-lab
cd ssh-scp-lab
Aufgabe V2 - Dockerfile erstellen
- Erstellen Sie eine Datei
Dockerfilemit folgendem Inhalt:
FROM ubuntu:24.04
RUN apt-get update && \
apt-get install -y openssh-server && \
mkdir /var/run/sshd
# Create group and user
RUN groupadd -g 10001 appgroup && \
useradd -m -u 10001 -g 10001 -s /bin/bash appuser && \
echo "appuser:changeme" | chpasswd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D", "-e"]
Aufgabe V3 - Image bauen und Container starten
- Bauen Sie das Image mit dem Namen
ssh-target.
docker build -t ssh-target .
- Starten Sie den Container:
docker run -d --name ssh-target --network proxy ssh-target
Aufgabe V4 - IP Adresse des Containers herausfinden
- Finden Sie die IP-Adresse des Containers heraus:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ssh-target
Aufgabe 1 - Per SSH einloggen
- Loggen Sie sich per SSH auf dem Zielserver ein.
- Verwenden Sie:
- Host:
IP Adresse des Containers - User:
appuser - Passwort:
changeme
- Host:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
ssh appuser@<IP Adresse des Containers>
changeme
Aufgabe 2 - Passwort ändern
- Ändern Sie das Passwort von
appuser. - Merken Sie sich das neue Passwort 😉
- Loggen Sie sich aus und wieder ein, um das neue Passwort zu testen.
- Loggen Sie sich anschließend wieder aus.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
Im SSH-Login:
passwd
exit
Aufgabe 3 - SSH-Konfiguration einrichten
Erstellen Sie eine lokale SSH-Konfigurationsdatei, um den Zugriff auf den Container zu vereinfachen.
- Erstellen Sie (falls nicht vorhanden) die Datei
~/.ssh/config - Fügen Sie einen Eintrag für Ihren Container hinzu mit:
- Host:
ssh-target(beliebiger Alias-Name) - HostName:
IP-Adresse des Containers - User:
appuser - Port:
22
- Host:
- Testen Sie die Verbindung mit dem Alias
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
# SSH-Config-Datei erstellen/bearbeiten
touch ~/.ssh/config
Fügen Sie folgenden Inhalt hinzu (ersetzen Sie <IP_ADRESSE> mit der tatsächlichen IP):
Host ssh-target
HostName <IP_ADRESSE>
User appuser
Port 22
Testen:
ssh ssh-target
Aufgabe 4 - SSH-Keys lokal erzeugen
Erzeugen Sie auf Ihrem lokalen System (nicht im Container) ein neues Key-Paar.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
# SSH-Config-Datei erstellen/bearbeiten
touch ~/.ssh/config
chmod 600 ~/.ssh/config
Fügen Sie folgenden Inhalt hinzu (ersetzen Sie <IP_ADRESSE> mit der tatsächlichen IP):
Host ssh-target
HostName <IP_ADRESSE>
User appuser
Port 22
Testen:
ssh ssh-target
Aufgabe 5 - SSH-Keys lokal erzeugen
Erzeugen Sie auf Ihrem lokalen System (nicht im Container) ein neues Key-Paar.
- Erzeugen Sie ein Key-Paar (ed25519).
- Speichern Sie es im Standardpfad (Enter drücken).
- Optional: setzen Sie eine Passphrase (empfohlen).
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
ssh-keygen -t ed25519 -a 100
~/.ssh/id_ed25519.pub
Aufgabe 6 - SSH-Keys auf dem Zielserver einrichten
Ziel: Ihr Public Key wird auf dem Server in ~/.ssh/authorized_keys hinterlegt.
- Nutzen Sie
ssh-copy-id, um Ihren Public Key auf den Zielserver zu kopieren. Geben Sie dabei explizit den Key an, den Sie kopieren möchten (z.B.~/.ssh/id_ed25519.pub).
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
# Mit IP-Adresse
ssh-copy-id -i ~/.ssh/id_ed25519.pub appuser@<IP Adresse des Containers>
# Oder mit dem SSH-Config Alias
ssh-copy-id -i ~/.ssh/id_ed25519.pub ssh-target
- Testen Sie den Login per Key.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
# Mit IP-Adresse
ssh appuser@<IP Adresse des Containers>
# Oder mit dem SSH-Config Alias
ssh ssh-target
Aufgabe 7 - Lokal eine Datei erstellen
- Wecheln Sie zurück nach
/home/coder/workspace/ssh-scp-labauf Ihrem lokalen System. - Erstellen Sie lokal eine Datei
message.txtmit einem kurzen Inhalt (z.B. 2–3 Zeilen).
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
cd /home/coder/workspace/ssh-scp-lab
cat > message.txt <<'EOF'
Hallo vom Client!
Diese Datei wird per scp übertragen.
EOF
Aufgabe 8 - Datei per SCP auf den Zielserver übertragen
- Kopieren Sie
message.txtin das Home-Verzeichnis vonappuserauf dem Zielserver.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
# Mit IP-Adresse
scp message.txt appuser@<IP Adresse des Containers>:/home/appuser/
# Oder mit dem SSH-Config Alias
scp message.txt ssh-target:/home/appuser/
Aufgabe 9 - Datei auf dem Zielserver bearbeiten
- Loggen Sie sich per SSH auf den Zielserver ein.
- Zeigen Sie den Inhalt von
message.txtan. - Ergänzen Sie eine weitere Zeile am Ende.
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
# Mit IP-Adresse
ssh appuser@<IP Adresse des Containers>
# Oder mit dem SSH-Config Alias
ssh ssh-target
Im SSH-Login:
cat /home/appuser/message.txt
echo "Bearbeitet auf dem Zielserver." >> /home/appuser/message.txt
cat /home/appuser/message.txt
exit
Aufgabe 10 - Datei per SCP zurück übertragen
- Kopieren Sie die bearbeitete Datei wieder zurück auf Ihr lokales System (z.B. als
message_from_server.txt).
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
# Mit IP-Adresse
scp appuser@<IP Adresse des Containers>:/home/appuser/message.txt ./message_from_server.txt
# Oder mit dem SSH-Config Alias
scp ssh-target:/home/appuser/message.txt ./message_from_server.txt
cat ./message_from_server.txt