Neulich hatte ich von Fedora 35 auf Fedora 36 gewechselt. Jetzt kommt es bei den ganzen Freifunksachen häufiger mal vor, dass man eine Datei auf einen Freifunkrouter kopieren muss.
Weil ich sehr gerne mit der Kommandozeile arbeite, mache ich das am liebsten über scp
. Doch unter Fedora 36 hat das leider nicht mehr ohne Schwierigkeiten funktioniert:
$ scp firmware.bin frei.funk:/tmp/
ash: /usr/libexec/sftp-server: not found
scp: Connection closed
Nach ein bisschen googlen habe ich zum Glück relativ schnell herausgefunden, warum das so ist: Seit OpenSSH-Version 9.0 wurde scp
vom scp-Protokoll auf das sftp-Protokoll umgestellt. In der Standardversion der Freifunk-Firmware ist jedoch kein Server dafür enthalten. (Man könnte den zwar installieren, aber das braucht eine ganze Menge Speicherplatz…)
Zum Glück kann man das alte Verhalten über einen Kommandozeilenparameter (-O
, also ein großes “o”) weiterhin nutzen. Der funktionierende Aufruf sieht dann so aus:
scp -O firmware.bin frei.funk:/tmp/
Falls man scp eigentlich nur für OpenWrt-Geräte nutzt (so wie ich), kann man sich in der Shell-Konfiguration einen Alias anlegen, der scp
zu scp -O
expandiert.
Quellen
- https://forum.openwrt.org/t/ash-usr-libexec-sftp-server-not-found-when-using-scp/125772
- https://www.openssh.com/txt/release-9.0