Zusammenfassung

  • OpenSSH 8.7 führte 2021 einen experimentellen SFTP-Modus für scp ein. OpenSSH 9.0 machte ihn am 8. April 2022 zum Standard.
  • Das ältere SCP/RCP-Verfahren ließ die entfernte Shell Platzhalter auflösen. Die 9.0-Versionshinweise erklären die Folge: aufwendige doppelte Maskierung von Sonderzeichen. -O blieb für den alten Weg erhalten.

Wo der Stern interpretiert wurde

scp host:*.txt . sieht nach einer schlichten Kopierbitte aus. Im alten Verfahren interpretierte die Shell auf dem entfernten Host den Stern. Die OpenSSH-9.0-Notizen beschreiben, warum dadurch Sonderzeichen in Dateinamen oft doppelt zitiert werden mussten. Eine Zeichenfolge musste erst durch die lokale und dann durch die entfernte Shell. Wer eine Datei benennen wollte, sprach nebenbei in der Befehlssprache des Servers. Das Problem lag in der Zuständigkeit für den Pfad, nicht im Namen des Kopierbefehls.

SFTP verwendet weiterhin eine SSH-Verbindung. So formuliert es das aktuelle scp(1)-Handbuch. Der Wechsel betraf das Dateiübertragungsprotokoll und die Behandlung entfernter Pfade. Die verschlüsselte Verbindung und die Regeln für Platzhalter sind unterschiedliche Teile des Betriebs.

Versuchsbetrieb, dann Umleitung

OpenSSH 8.7 vom August 2021 bot scp -s als SFTP-Versuch an. Die Begründung war konkret: vorhersehbarere Dateinamen und keine Platzhalterauflösung durch eine entfernte Shell. Dieselbe Version leitete Kopien zwischen zwei entfernten Hosts standardmäßig über den lokalen Host. So mussten Anmeldedaten nicht auf dem Ausgangshost bereitliegen, und ein Name wurde nicht dreifach von lokalen, Ausgangs- und Ziel-Shells interpretiert. Der Entwurf änderte tatsächliche Wege der Kopie.

Am 8. April 2022 schaltete OpenSSH 9.0 SFTP als scp-Standard ein. Eine alte, für die entfernte Shell geschriebene doppelte Maskierung konnte nun einen Transfer scheitern lassen. Das Projekt nannte den Wegfall dieser umständlichen Pflicht einen Vorteil und wollte die alte Eigenart nicht nachbauen. Alte Skripte können so gut an ein schlechtes Verhalten angepasst sein, dass dessen Ende wie ein Fehler aussieht.

Ein Sonderfall betraf Pfade mit ~user/. SFTP kennt keine eigene Regel, um das Home-Verzeichnis eines anderen Benutzers zu erweitern. OpenSSH 8.7 ergänzte dafür eine serverseitige Erweiterung zur Pfadauflösung. Ein älterer SFTP-Server konnte diese Erweiterung noch nicht kennen. Ein neuer Client verschafft dem Gegenüber keine neuen Fähigkeiten.

Das heutige Handbuch führt scp -O für Server ohne SFTP, bestimmte Platzhaltermuster und alte Tilde-Auflösung auf. Wer diesen Schalter nutzt, bekommt das SCP/RCP-Protokoll und seine entfernte Shell zurück. Der Ausweichweg ist nützlich, aber seine alte Kurve bleibt eng.

Eine stabile Oberfläche mit neuer Bedeutung

Das OpenBSD-7.3-Handbuch beschreibt bereits scp über SFTP und SSH; das aktuelle Handbuch datiert den Standardwechsel auf OpenSSH 9.0. Der Befehl verschwand nicht. Was sich änderte, war die normale Gesprächsform zwischen Client und Server. Das alte Gespräch blieb als Ausnahme. Reale Dateinamen, Serverfunktionen und Automationsskripte entschieden darüber, wie glatt diese Ablösung verlief. Ein unverändertes Schild ist kein Beweis für einen unveränderten Betrieb.