Steuert man WinSCP via CLI oder Skript und kommen Kennwörter mit Sonderzeichen wie z.B. “%”, “$”, “!”, usw. zum Einsatz, so müssen diese passend konvertiert sein.

Der Hintergrund ist, das nur ASCII-Zeichen verwendet werden können, hinzu kommen Windows-eigene Spezialitäten. Bevor man nun lange herumexperimentiert kann man einen einfacheren Weg gehen:

  • Mit WinSCP (GUI) verbinden.
  • Auf “Session – Generate session-URL/code…” klicken.
  • Nur “Username” und “Password” auswählen.
  • Auf “Copy to clipboard” klicken.
  • In Editor einfuegen.
  • Der Wert zwischen “:” und “@” entspricht dem Passwort im richtigen Format.

Zu beachten sind die Besonderheiten der Windows-Eingabeaufforderung bzw. bei der Verwendung aus Batch-Skripte heraus. Enthält das Kennwort beispielsweise ein “%”-Zeichen muss dieses zweimal verwendet werden, da das Erste sozusagen geschluckt wird. Ein Beispiel:

Das eigentliche Passwort lautet: Geheim%123

set password=Geheim%%123echo %password% > upload.txt

Schaut man in die “upload.txt” sieht man das eigentliche Kennwort. Lässt man das zweite “%”-Zeichen weg, wird das Kennwort verfälscht und es wird “Geheim123” daraus.

Quellen:

WinSCP – Documentation – Features – Session URL – Special Characters

WinSCP – Documentation – Using WinSCP – Generate Session URL/Code/Transfer Code Dialog