
🔓 Root-Rechte in WinSCP erhalten: sudo für Dateiübertragungen konfigurieren
Sie verbinden sich als regulärer Benutzer mit einem Server, navigieren zu /etc/nginx und erhalten „Permission denied". Konfigurationsdateien, Systemverzeichnisse, Logs: All das ist für ein Konto ohne root-Berechtigungen gesperrt. Und die direkte root-Anmeldung per SSH ist auf den meisten Servern aus Sicherheitsgründen deaktiviert.
WinSCP ist ein komfortabler Dateimanager für Windows, aber standardmäßig arbeitet seine SFTP-Sitzung mit den Berechtigungen des Benutzers, mit dem Sie sich angemeldet haben. Das SFTP-Protokoll kann keine Rechteerweiterung „on the fly" anfordern, wie es ein Terminal kann: Es ist während des Handshakes nicht interaktiv und kann kein Fenster zur Eingabe eines sudo-Passworts anzeigen.
Nachfolgend finden Sie vier funktionierende Methoden, um WinSCP mit Superuser-Rechten auszuführen, von der einfachsten bis zum „Jedi"-Ansatz. Jede wurde unter Ubuntu, Debian und CentOS getestet. Wählen Sie diejenige, die am besten zu Ihrer Infrastruktur passt.
💡 Kurzübersicht:
- ➡️ Problem: WinSCP gewährt standardmäßig keine
root-Rechte, selbst wenn der Benutzersudo-Berechtigungen hat. - ✅ Primäre Methode: Ersetzen des SFTP-Server-Startbefehls in den WinSCP-Site-Einstellungen. Schnell und zielgerichtet.
- 🔄 Alternative: Wechsel zum SCP-Protokoll mit
sudo su -als Shell. - ⚙️ Erweitert: Bearbeiten der
sshd_configauf dem Server. Eine globale Lösung für alle Verbindungen.
Schritt 1: SFTP-Server-Startbefehl (die primäre Methode)
Der gängigste und eleganteste Weg, um in WinSCP root-Rechte zu erhalten, besteht darin, den SFTP-Server von Anfang an als Superuser zu starten. Dies geschieht durch Ersetzen des Startbefehls in den Einstellungen für eine bestimmte Verbindung. Der Server selbst muss nicht neu konfiguriert werden; die Lösung funktioniert verbindungsbezogen.

Schritt-für-Schritt-Anleitung:
- Starten Sie WinSCP und öffnen Sie die Site-Verwaltung.
- Wählen Sie die gewünschte Verbindung und klicken Sie auf Bearbeiten.
- Klicken Sie unten im Fenster auf Erweitert….
- Gehen Sie im linken Menü zu Umgebung → SFTP.
- Ersetzen Sie im Feld „SFTP-Server" den Eintrag „Standard" durch folgenden Befehl:
1 sudo /usr/lib/openssh/sftp-server
Bei älteren Distributionen kann der Pfad abweichen. Typische sftp-server-Speicherorte:
Distribution | Pfad zum sftp-server |
|---|---|
Ubuntu / Debian (aktuell) |
|
Ubuntu / Debian (älter) |
|
CentOS / RHEL / Fedora |
|
Amazon Linux |
|
Den genauen Pfad auf Ihrem Server können Sie per Terminal prüfen: cat /etc/ssh/sshd_config | grep Subsystem. Dieser Befehl zeigt, welche Binärdatei der SSH-Server selbst verwendet.
Das System startet das Dateiübertragungs-Subsystem sofort mit root-Rechten. Damit dies jedoch fehlerfrei funktioniert, muss Ihr Benutzer sudo ohne Passwortabfrage ausführen können. Dies wird im nächsten Schritt behandelt.
Schritt 2: sudoers konfigurieren (sudo ohne Passwort erlauben)
Da der SFTP-Handshake nicht interaktiv ist, hat WinSCP keine Möglichkeit, ein Fenster zur Eingabe eines sudo-Passworts anzuzeigen. Der Server beendet die Verbindung einfach mit einem Fehler, wenn ein Passwort angefordert wird. Die Lösung besteht darin, dem Benutzer über die Datei /etc/sudoers die Erlaubnis zu erteilen, den erforderlichen Befehl ohne Passwort auszuführen.

Was zu tun ist:
- Verbinden Sie sich per SSH mit dem Server (mit PuTTY oder dem integrierten Terminal von WinSCP).
- Öffnen Sie den sudoers-Editor mit
sudo visudo. Bearbeiten Sie/etc/sudoersniemals direkt: Ein Syntaxfehler sperrtsudofür das gesamte System, undvisudovalidiert die Syntax vor dem Speichern. - Fügen Sie die folgende Zeile am Ende der Datei hinzu (ersetzen Sie
usernamedurch Ihren Benutzernamen):
1 username ALL=(ALL) NOPASSWD: ALL
Dies gewährt dem Benutzer vollständigen Zugriff ohne Passwort. Eine sicherere Option ist, die Berechtigung nur auf den SFTP-Server-Startbefehl zu beschränken:
1 username ALL=NOPASSWD: /usr/lib/openssh/sftp-server
Wenn der Server mehrere Administratoren mit unterschiedlichen Logins hat, reduziert eine enge Konfiguration das Risiko: Selbst wenn ein Konto kompromittiert wird, erhält der Angreifer keinen root-Zugriff auf alles, sondern nur die Möglichkeit, SFTP zu starten.
Hinweis: Die Option requiretty in sudoers muss deaktiviert sein. Moderne sudo-rs-Implementierungen unterstützen sie standardmäßig nicht, aber auf älteren Servern sollten Sie die Zeile Defaults requiretty prüfen und auskommentieren, falls vorhanden.
Schritt 3: Wechsel zum SCP-Protokoll (eine schnelle Alternative)
Wenn Sie sich nicht mit Pfaden zum sftp-server befassen möchten, können Sie das Datenübertragungsprotokoll selbst wechseln. WinSCP unterstützt SCP, ein älteres, aber zuverlässiges Protokoll, das Shell-Einstellungen leichter übernimmt.

So wechseln Sie:
- Ändern Sie in den WinSCP-Sitzungseinstellungen das Dateiprotokoll von SFTP auf SCP.
- Gehen Sie zu Erweitert → SCP/Shell.
- Geben Sie im Feld Shell ein:
sudo su -
Beim Verbinden führt WinSCP diesen Befehl sofort nach der Anmeldung aus und schaltet die Sitzung in den root-Modus.
| SFTP | SCP |
|---|---|---|
Root-Rechte | Durch Ersetzen der Server-Binärdatei | Durch Ersetzen der Shell ( |
Geschwindigkeit | Höher, besonders bei vielen kleinen Dateien | Geringer |
Wiederaufnahme bei Verbindungsabbruch | Ja | Nein |
Zuverlässigkeit auf älteren Systemen | Erfordert exakten Pfad zur Binärdatei | Funktioniert „out of the box" |
Sicherheit | NOPASSWD kann auf einen Befehl beschränkt werden | Erfordert vollständiges passwortloses sudo |
Die SCP-Methode ist ein Kompromiss. Sie ist einfacher zu konfigurieren, verliert aber gegenüber SFTP an Geschwindigkeit und Wiederherstellungsfähigkeit nach einer Unterbrechung. Für einmalige Konfigurationsänderungen ist der Unterschied vernachlässigbar. Für die regelmäßige Übertragung hunderter Dateien ist es besser, die SFTP-Methode zu konfigurieren.
Schritt 4: Globale sshd_config-Konfiguration (für fortgeschrittene Benutzer)
Diese Methode ist für Administratoren gedacht, die das Verhalten des SSH-Servers zentral konfigurieren möchten. Die Idee: Ersetzen Sie die Zeile Subsystem sftp in /etc/ssh/sshd_config durch ein logisches Konstrukt, das automatisch erkennt, ob der Benutzer sudo ohne Passwort ausführen kann, und SFTP mit den entsprechenden Rechten startet.
Was zu ändern ist:
Alte Zeile (typischerweise):
1 Subsystem sftp /usr/lib/openssh/sftp-server
Neue Zeile:
1 Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
So funktioniert es:
sudo -n trueprüft, ob der Benutzersudoohne Passwort ausführen kann (der Schalter-nbedeutet nicht-interaktiv).- Wenn ja (
&&), startet der Server mitroot-Rechten. - Wenn nein (
||), startet der Server mit regulären Benutzerrechten.
Starten Sie nach der Bearbeitung den SSH-Dienst neu: sudo systemctl restart sshd.
Wichtig: Ein Syntaxfehler in dieser Datei sperrt Sie vollständig vom SSH-Zugang zum Server aus. Stellen Sie vor der Bearbeitung sicher, dass Sie ein zweites Terminal mit einer aktiven Sitzung haben. Wenn etwas schiefgeht, können Sie die Änderungen rückgängig machen. Erstellen Sie außerdem ein Backup: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.
Besonderheiten bei Cloud-Servern (AWS EC2, DigitalOcean)
Cloud-Linux-Images haben oft vorkonfigurierte sudoers-Einstellungen, die die Aufgabe entweder vereinfachen oder erschweren können.

AWS EC2 (Ubuntu):
Der Benutzer ubuntu auf Ubuntu 18.04 und neueren Images hat oft bereits die erforderlichen Berechtigungen. Prüfen Sie die Datei /etc/sudoers.d/90-cloud-init-users, die möglicherweise bereits die Zeile enthält:
1 ubuntu ALL=(ALL) NOPASSWD:ALL
Wenn sie vorhanden ist, können Sie Schritt 2 überspringen. Verwenden Sie in den WinSCP-Einstellungen den Befehl sudo /usr/lib/openssh/sftp-server.
AWS EC2 (Amazon Linux):
Bei Amazon Linux ist der Pfad zum sftp-server anders: /usr/libexec/openssh/sftp-server. Ein einzelner Buchstabenfehler (lib statt libexec) führt zu Fehlercode 127 (Command not found) und einem sofortigen Verbindungsabbruch.
DigitalOcean (Ubuntu Droplets):
Bei Standard-DigitalOcean-Droplets ist der root-Benutzer standardmäßig aktiviert, der Zugriff erfolgt jedoch nur per SSH-Schlüssel. Wenn Sie einen separaten Benutzer erstellt haben, ist die sudoers-Konfiguration dieselbe wie bei regulärem Ubuntu.
Allgemeiner Rat für die Cloud: Bevor Sie einen Pfad in WinSCP eingeben, überprüfen Sie, ob die Datei auf dem Server existiert: ls -la /usr/lib/openssh/sftp-server (oder das Äquivalent für Ihre Distribution).
⁉️🤔 Häufig gestellte Fragen
Muss ich die direkte root-Anmeldung aktivieren, damit WinSCP mit sudo funktioniert?
Nein. Der Sinn der beschriebenen Methoden besteht gerade darin, ein reguläres Konto zu verwenden und die Rechte temporär über
sudozu erweitern. Die direkteroot-Anmeldung (PermitRootLogin yes) gilt als schlechte Sicherheitspraxis: Die Logs zeigen nicht, welcher Administrator tatsächlich eine Aktion durchgeführt hat.
Warum zeigt WinSCP nach der Konfiguration einen „Command not found"-Fehler an?
Höchstwahrscheinlich ist der Pfad zum
sftp-serverfalsch. In verschiedenen Distributionen befindet er sich in/usr/lib/,/usr/lib/openssh/oder/usr/libexec/openssh/. Der genaue Pfad kann mit dem Befehlcat /etc/ssh/sshd_config | grep Subsystemauf dem Server überprüft werden.
Wie sicher ist NOPASSWD in sudoers?
Es ist ein Kompromiss. Vollzugriff mit
ALL=(ALL) NOPASSWD:ALLreduziert den Schutz: Wenn ein Angreifer Zugriff auf den Benutzer erlangt, erhält er auchroot. Die Beschränkung auf einen bestimmten Befehl (/usr/lib/openssh/sftp-server) ist deutlich sicherer: Ein Außenstehender kann über dieses Konto nichts anderes als den SFTP-Server ausführen.
Funktioniert das auch mit anderen Clients wie FileZilla oder Cyberduck?
Das Prinzip ist dasselbe, aber die Konfiguration unterscheidet sich. FileZilla hat kein komfortables Feld für den SFTP-Server-Befehl in seiner grafischen Oberfläche; die Bearbeitung der Konfigurationsdatei ist erforderlich. Cyberduck unterstützt die Option „SFTP Server" in den Verbindungseinstellungen, ähnlich wie WinSCP. WinSCP punktet in diesem Szenario besonders durch seine Benutzerfreundlichkeit.
Was tun, wenn Dateien sichtbar, aber nicht bearbeitbar sind?
Überprüfen Sie Besitzer und Berechtigungen mit
ls -laauf dem Server. Wenn Sie den SFTP-Server übersudokonfiguriert haben, die Verbindung aber auf reguläre Berechtigungen zurückgefallen ist, bedeutet das, dasssudoein Passwort angefordert und keine Antwort erhalten hat. Überprüfen Sie die NOPASSWD-Konfiguration aus Schritt 2 erneut.
Kann ich einfach den Besitzer von Systemdateien auf meinen Benutzer ändern?
Das ist ein „unsauberer" Workaround. Systemdienste erwarten, dass ihre Konfigurationen
rootgehören. Das Ändern des Besitzers (chown) oder der Berechtigungen (chmod) an Systemdateien kann Dienste beschädigen. Es ist besser, fünf Minuten in die sudo-Konfiguration zu investieren und es ordentlich zu machen.
Was ist der Unterschied zwischen SCP und SFTP im Kontext von sudo?
SCP ist einfaches Kopieren über SSH: Es übernimmt die Shell leichter, daher reicht dafür der Befehl
sudo su -im Shell-Feld aus. SFTP ist ein vollwertiges Subsystem, das als separater Prozess läuft: Es erfordert den Trick mit dem Ersetzen der Binärdatei. SFTP ist schneller und funktionsreicher; SCP ist einfacher zu konfigurieren.
Sind Aktionen in den Logs sichtbar, wenn sudo über WinSCP verwendet wird?
Ja. In
/var/log/auth.loggibt es einen Eintrag, der zeigt, dass Benutzerusernamedie Rechte übersudoerweitert hat. Das ist ein Pluspunkt: Wenn es mehrere Administratoren gibt, zeigen die Logs genau, wer die Operation durchgeführt hat. Bei direkterroot-Anmeldung gibt es diese Transparenz nicht.
Was tun, wenn sudo ein TTY benötigt, WinSCP aber keines bereitstellt?
Überprüfen Sie
/etc/sudoersauf die OptionDefaults requiretty. Wenn sie existiert, kommentieren Sie sie aus (fügen Sie#am Zeilenanfang hinzu) oder deaktivieren Sie sie für einen bestimmten Benutzer:Defaults:username !requiretty. Modernesudo-rs-Implementierungen unterstützen diese Option nicht; das Problem ist nur für ältere Server relevant.
Kann ich SFTP als ein anderer Benutzer anstelle von root ausführen?
Ja. Der Befehl
sudo -u www-data /usr/lib/openssh/sftp-serverstartet die Sitzung alswww-data. Dies ist praktisch, wenn Sie Website-Dateien bearbeiten müssen, ohne Systemverzeichnisse zu berühren. Die sudoers-Berechtigungen dafür müssen die Option-uenthalten:username ALL=(www-data) NOPASSWD: /usr/lib/openssh/sftp-server.
Abschließendes Urteil: Welche Methode soll man wählen?
Für die tägliche Serverarbeit ist die erste Methode optimal: Ersetzen des SFTP-Server-Befehls kombiniert mit einer engen NOPASSWD-Konfiguration nur für sftp-server. Sie ist sicher, beeinflusst keine globalen Einstellungen und funktioniert auf allen modernen Distributionen.
- Wenn Sie Ubuntu / Debian haben und bereit sind, 5 Minuten in die Konfiguration zu investieren, verwenden Sie Schritt 1 + Schritt 2 und das Thema ist dauerhaft erledigt.
- Wenn der Server alt ist und der Pfad zum
sftp-servernicht gefunden werden kann, wechseln Sie zu SCP (Schritt 3): Es toleriert Ungenauigkeiten und funktioniert praktisch überall. - Wenn Sie ein Dutzend Server administrieren und einen einheitlichen Standard wünschen, konfigurieren Sie sshd_config (Schritt 4) einmalig per Ansible oder manuell, aber auf jeden Fall mit einem Backup.
Beginnen Sie mit einer Prüfung: Melden Sie sich per SSH am Server an und führen Sie cat /etc/ssh/sshd_config | grep Subsystem aus. In einer Minute kennen Sie den genauen Pfad, und die erste Methode funktioniert auf Anhieb. Welche Dateiübertragungsmethode verwenden Sie? Teilen Sie es in den Kommentaren mit.



