Start-MiniFtpServer

EulandaXtools — Funktionsreferenz

Start-MiniFtpServer

ÜBERSICHT

Minimaler FTP-Server in PowerShell 5.1. Multi-Session (RunspacePool), PASV/EPSV (nur Passive Mode), optionale Auth (USER/PASS), UTF-8 auf der Kontrollverbindung, Datei-Infos (SIZE/MDTM), Umbenennen (RNFR/RNTO), STAT-Listing über Control, Datei-Checksummen (HASH; XMD5/XSHA1/XSHA256; OPTS HASH ...), Auto-Stop (Default 60 Minuten), IP-Allowlist (Einzel-IPs oder CIDR).

SYNTAX

Start-MiniFtpServer [[-Root] <string>] [[-Port] <int>] [[-User] <string>] [[-Password] <string>]
    [[-ListenAddress] <string>] [[-PassivePorts] <int[]>] [[-MaxSessions] <int>]
    [[-AutoStopMinutes] <int>] [[-AllowedClientIPs] <string[]>] [<CommonParameters>]

BESCHREIBUNG

Zweck

Warum Passivmodus

Ports, Firewall, NAT

Client-Anforderungen

Sicherheit

Interner Ablauf (Kurzübersicht)

Hauptloop

Session-Code

* Pfadnormalisierung stellt sicher, daß nichts außerhalb des `-Root` erreichbar ist.

* Listener stoppen, Sessions beenden, Pool dispose, Ctrl+C-Handler deregistrieren.

PARAMETER

-Root

Type: string
Default: $PWD.Path

Optionales Wurzelverzeichnis (Sandbox). Alle Dateioperationen sind auf dieses Verzeichnis und seine Childs beschränkt. Falls nicht angegeben, wird das aktuelle Arbeitsverzeichnis verwendet.

-Port

Type: int
Default: 2121

Control-Port (TCP) für den FTP-Server. Default 2121. Hinweis: Ports <1024 erfordern auf Windows Administratorrechte.

-User

Type: string

Optionaler Benutzername. Wird nur geprüft, wenn auch `-Password` gesetzt ist.

-Password

Type: string

Optionales Passwort. Wird nur geprüft, wenn auch `-User` gesetzt ist.

-ListenAddress

Type: string
Default: '0.0.0.0'

IP-Adresse, auf der der Control-Listener bindet. Default `0.0.0.0` (alle IPv4-Interfaces).

-PassivePorts

Type: int[]
Default: $null

Liste bzw. Range von TCP-Ports für passive Datenverbindungen (z. B. `50000..50011`). Wenn nicht angegeben, setzt der Server einen Default: Start 50000, Anzahl ca. `MaxSessions*4` (mindestens 8 Ports).

-MaxSessions

Type: int
Default: 3

Maximale parallele Control-Sessions (RunspacePool MaxSize). Default 3.

-AutoStopMinutes

Type: int
Default: 60

Minuten bis zur automatischen Selbstabschaltung. `0` deaktiviert. Default 60.

-AllowedClientIPs

Type: string[]
Default: $null

Optional. Liste von erlaubten Client-IPs oder CIDR-Netzen (IPv4/IPv6). Beispiele:

AUSGABEN

none

Keine Rückgabe. Die Funktion läuft bis Auto-Stop, Strg+C oder Aufruf von Stop-MiniFtpServer.

BEISPIELE

# Minimalstart mit Defaults (Control 2121, Passiv-Range Default 50000-50011 bei MaxSessions=3)
Start-MiniFtpServer -Root C:\Temp
# Eigene Passiv-Range und 5 parallele Sessions
Start-MiniFtpServer -Root C:\Temp -Port 2121 -MaxSessions 5 -PassivePorts (50000..50031)
# Benutzer/Passwort aktivieren
Start-MiniFtpServer -Root C:\Temp -User support -Password secret
# Zwei konkrete Public-IPs erlauben (und sonst niemanden)
Start-MiniFtpServer -Root C:\Temp -AllowedClientIPs @('84.137.55.101','198.51.100.23')
# Ein Netz plus eine Einzel-IP erlauben
Start-MiniFtpServer -Root C:\Temp -AllowedClientIPs @('203.0.113.0/24','84.137.55.101')
# Hinter NAT/Router (Server im LAN):
# 1) Am Router Port-Forwarding einrichten: Control-Port (z. B. 2121) und Passiv-Range (z. B. 50000-50011) auf die interne Server-IP.
# 2) In der Windows-Firewall die gleichen Ports INBOUND erlauben.
# 3) DynDNS oder Public IP an den Client kommunizieren.
Start-MiniFtpServer -Root C:\Temp -PassivePorts (50000..50011)
# Automatische Abschaltung nach 30 Minuten
Start-MiniFtpServer -Root C:\Temp -AutoStopMinutes 30

HINWEISE

Windows-Firewall-Beispiele (Server):

New-NetFirewallRule -DisplayName 'MiniFTP Control' -Direction Inbound -Protocol TCP -LocalPort 2121 -Action Allow

New-NetFirewallRule -DisplayName 'MiniFTP Passive' -Direction Inbound -Protocol TCP -LocalPort 50000-50011 -Action Allow

Port 21 verwenden

Beachten: Administratorrechte nötig, Port 21 ist Angriffsziel. Passive-ALG in Routern ggf. deaktivieren.