Zum Inhalt

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


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-lab und 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 Dockerfile mit 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
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)

ssh appuser@<IP Adresse des Containers>
Passwort: 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
Folgen Sie der Eingabeaufforderung.
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
  • 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
Der Public Key liegt danach typischerweise hier:
~/.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-lab auf Ihrem lokalen System.
  • Erstellen Sie lokal eine Datei message.txt mit 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.txt in das Home-Verzeichnis von appuser auf 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.txt an.
  • 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