SCP (Secure Copy) und SFTP (SSH File Transfer Protocol) ermöglichen verschlüsselte Dateiübertragung über SSH. Sie sind die sichere Alternative zu FTP.
SCP
Grundlagen
# Lokale Datei auf Server kopieren
scp datei.txt user@server:/pfad/
# Datei vom Server holen
scp user@server:/pfad/datei.txt ./
# Mit anderem Port
scp -P 2222 datei.txt user@server:/pfad/Verzeichnisse
# Verzeichnis rekursiv kopieren
scp -r /lokales/verzeichnis user@server:/pfad/
# Vom Server
scp -r user@server:/pfad/verzeichnis ./Optionen
# Verbose (Fortschritt)
scp -v datei.txt user@server:/pfad/
# Kompression
scp -C datei.txt user@server:/pfad/
# Berechtigungen erhalten
scp -p datei.txt user@server:/pfad/
# Bandbreite begrenzen (KBit/s)
scp -l 1000 large.zip user@server:/pfad/
# SSH-Key angeben
scp -i ~/.ssh/mykey datei.txt user@server:/pfad/
# Kombiniert
scp -rpC -P 2222 /data user@server:/backup/Zwischen Servern
# Direkt zwischen zwei Servern
scp user1@server1:/pfad/datei.txt user2@server2:/pfad/
# Über lokalen Rechner (bei Firewall)
scp -3 user1@server1:/pfad/datei.txt user2@server2:/pfad/SFTP
Interaktiv
# Verbinden
sftp user@server
# Mit Port
sftp -P 2222 user@server
# Mit SSH-Key
sftp -i ~/.ssh/mykey user@serverSFTP-Befehle
# Nach Verbindung:
# Verzeichnis-Navigation
pwd # Remote-Verzeichnis
lpwd # Lokales Verzeichnis
cd /pfad # Remote wechseln
lcd /pfad # Lokal wechseln
ls # Remote auflisten
lls # Lokal auflisten
# Upload
put datei.txt
put -r verzeichnis/
mput *.txt # Mehrere Dateien
# Download
get datei.txt
get -r verzeichnis/
mget *.txt # Mehrere Dateien
# Dateiverwaltung
mkdir verzeichnis
rmdir verzeichnis
rm datei.txt
rename alt neu
chmod 644 datei.txt
chown user datei.txt
# Beenden
exit
bye
quitBatch-Modus
# Befehle aus Datei
sftp -b commands.txt user@server
# commands.txt:
# cd /var/www
# put index.html
# chmod 644 index.html
# exitEinzeiler
# Einzelne Datei
echo "get /pfad/datei.txt" | sftp user@server
# Mit Kommando
sftp user@server:/pfad/datei.txt ./
# Mehrere Befehle
sftp user@server << EOF
cd /var/www
put index.html
chmod 644 index.html
EOFSSH-Konfiguration
~/.ssh/config
# Häufig genutzte Server
Host webserver
HostName 192.168.1.10
User deploy
Port 22
IdentityFile ~/.ssh/deploy_key
Host backup
HostName backup.example.de
User backupuser
Port 2222
IdentityFile ~/.ssh/backup_key# Dann einfach:
scp datei.txt webserver:/var/www/
sftp backupVergleich
| Feature | SCP | SFTP | |---------|-----|------| | Interaktiv | Nein | Ja | | Resume | Nein | Ja | | Verzeichnis-Liste | Nein | Ja | | Dateiverwaltung | Nein | Ja | | Performance | Schneller | Etwas langsamer | | Scripting | Einfach | Batch-Modus |
Praktische Beispiele
Backup-Script
#!/bin/bash
# Remote Backup
DATE=$(date +%Y%m%d)
SERVER="backup@backup.example.de"
REMOTE_PATH="/backup/"
# Archiv erstellen
tar -czvf /tmp/backup-$DATE.tar.gz /var/www/
# Hochladen
scp /tmp/backup-$DATE.tar.gz $SERVER:$REMOTE_PATH
# Lokal löschen
rm /tmp/backup-$DATE.tar.gz
echo "Backup fertig"Sync mit rsync
# Für große Übertragungen rsync bevorzugen
rsync -avz -e ssh /lokaler/pfad/ user@server:/remote/pfad/
# Vorteile gegenüber SCP:
# - Inkrementell (nur Änderungen)
# - Fortsetzen möglich
# - Delta-TransferSFTP-Only User
# /etc/ssh/sshd_config
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
# Verzeichnis vorbereiten
mkdir -p /home/sftpuser/upload
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
chown sftpuser:sftpuser /home/sftpuser/uploadGUI-Clients
- FileZilla (plattformübergreifend)
- WinSCP (Windows)
- Cyberduck (Mac/Windows)
- Nautilus/Dolphin (sftp://user@server)Troubleshooting
Häufige Probleme
# Connection refused
# → SSH-Service läuft?
systemctl status sshd
# Permission denied
# → Berechtigungen und User prüfen
# → SSH-Key korrekt?
# Host key verification failed
# → Known hosts prüfen
ssh-keygen -R hostname
# Slow connection
# → DNS-Lookup deaktivieren
# /etc/ssh/sshd_config: UseDNS noDebug
# Verbose Mode
scp -v datei.txt user@server:/pfad/
sftp -v user@server
# Sehr verbose
scp -vvv datei.txt user@server:/pfad/Zusammenfassung
| Befehl | Funktion | |--------|----------| | scp datei user@host:/pfad | Upload | | scp user@host:/pfad/datei . | Download | | scp -r | Rekursiv | | scp -P | Port angeben | | sftp user@host | Interaktiv | | sftp -b | Batch-Modus |
| SFTP-Befehl | Funktion | |-------------|----------| | put | Upload | | get | Download | | ls/lls | Auflisten | | cd/lcd | Wechseln | | rm/mkdir | Verwalten |
Fazit
SCP ist ideal für schnelle, einfache Dateiübertragungen. SFTP bietet mehr Funktionen für interaktive Arbeit. Beide nutzen SSH-Verschlüsselung. Für regelmäßige Synchronisation ist rsync besser geeignet. SSH-Config vereinfacht die Arbeit mit mehreren Servern.