FTP & SFTP

Der FTP-/SFTP-Transport legt die transformierte Bestellung als Datei in ein Zielverzeichnis auf einem (S)FTP-Server. Typischer Einsatz: dateibasierte Importer in Warenwirtschaftssystemen (z. B. JTL-Wawi, Sage), EDI-Clearing-Anbieter oder Lieferantenportale, die Dropfolder überwachen. Benötigtes Addon: delivery_ftp.

Wann FTP/SFTP wählen?

  • Das Ziel-System importiert Bestellungen aus einem überwachten Verzeichnis
  • Der Empfänger kann keinen HTTP-Endpoint bereitstellen, aber einen FTP-Server
  • Sie tauschen mit einem EDI-Clearing-Anbieter Dateien aus

Für neue Integrationen bevorzugen Sie nach Möglichkeit HTTP POST oder REST API – FTP ist altersbedingt oft weniger sicher und weniger transaktional.

SFTP vs. FTP

Aspekt SFTP FTP/FTPS
Transport SSH (Port 22) TCP (Port 21) + AUTH TLS
Verschlüsselung Immer Nur mit expliziter AUTH-TLS-Initialisierung
Authentifizierung Passwort oder SSH-Key Passwort
Firewall-Verhalten Einfach (eine Verbindung) Komplex (Active vs. Passive, Data-Port)

Empfehlung: SFTP wo möglich. Klassisches FTP ist nur sinnvoll, wenn der Partner kein SFTP anbietet – dann bitte mindestens FTPS (AUTH TLS) nutzen.

Einrichtung

  1. Transporte → Hinzufügen → Typ: FTP/SFTP
  2. Protokoll: SFTP, FTP oder FTPS
  3. Host: z. B. ftp.example.com
  4. Port: 22 (SFTP) oder 21 (FTP/FTPS) – manche Anbieter nutzen eigene Ports
  5. Benutzername
  6. Authentifizierung:
    • Passwort – wird verschlüsselt gespeichert
    • SSH-Key (nur SFTP) – Key-Pärchen wird in Orderport erzeugt, Public-Key an den Partner weitergegeben
  7. Pfad auf dem Zielserver (z. B. /inbox/orders/)
  8. SSL/TLS-Verifikation: aktiviert (Default) – nur bei selbstsignierten Zertifikaten deaktivieren, in Absprache mit dem Partner
  9. Passiv-Modus: Standard für FTP – bei Firewall-Problemen Aktiv-Modus versuchen
  10. Speichern → Verbindung testen

Dateinamen

Orderport erzeugt Dateien nach dem Muster:

{external_order_id}_{YYYYMMDD_HHMMSS}.{ext}
  • ext ist xml oder json je nach Ausgabeformat
  • Retries bei Netzwerkfehler erzeugen im Erfolgsfall genau eine Datei
  • Bei mehreren Zustellversuchen entstehen ggf. doppelte Dateien mit leicht anderen Timestamps – das Ziel-System sollte idempotent importieren

Technische Details

Atomarer Upload

Der Upload läuft in zwei Schritten: Orderport schreibt die Datei zuerst mit einer .tmp-Endung auf den Server und benennt sie erst nach erfolgreichem Transfer in den endgültigen Dateinamen um. Dadurch sieht das Ziel-System nie eine halb geschriebene Datei. Voraussetzung: der FTP/SFTP-Benutzer darf im Zielverzeichnis schreiben und umbenennen.

SSH-Keys

Wenn Sie bei SFTP statt Passwort ein SSH-Key-Paar nutzen, erzeugt Orderport das Paar in OpenSSH-Format. Der öffentliche Teil wird Ihnen zum Download angeboten – Sie hinterlegen ihn in der authorized_keys-Datei des Ziel-Benutzers.

Passwort-Speicherung

Passwörter und Secrets werden verschlüsselt abgelegt und nur im Arbeitsspeicher des Zustellungs-Vorgangs entschlüsselt. Klartexte erscheinen nie in Logs oder Datenbank-Dumps.

Feature-Gate

Der FTP/SFTP-Transport ist hinter dem Addon delivery_ftp. Demo-Mandanten haben uneingeschränkten Zugang.

Fehlerbehebung

Symptom Ursache Lösung
„Connection refused" Port geschlossen oder Host falsch Host/Port prüfen, Firewall-Regeln beim Partner abklären
„Authentication failed" Benutzername/Passwort falsch, oder SSH-Key nicht deponiert Zugangsdaten prüfen; bei SSH-Key den Public-Key beim Partner in authorized_keys eintragen
Datei wird geschrieben, aber vom Importer nicht gelesen Importer ignoriert .tmp-Dateien, aber Rename schlägt still fehl Auf dem Server prüfen, ob Orderport Schreibrechte und Umbenennungs-Rechte im Zielverzeichnis hat
Aktive FTP-Verbindung funktioniert nicht Firewall blockt eingehende Data-Connection Passiv-Modus aktivieren (Default)
SSL-Fehler bei FTPS Server nutzt selbstsigniertes Zertifikat Mit dem Partner klären: idealerweise gültiges Zertifikat, notfalls SSL-Verifikation deaktivieren (erst nach Absprache)
Nach Upload „Permission denied" Verzeichnis lässt kein Rename zu Partner bitten, dem Benutzer das Rename-Recht zu geben

Nächste Schritte