Een scp-opdracht die jarenlang in een script werkte, kan op een huidige client mislukken met een padfout die niets met de tunnel te maken heeft. De VPN droeg de bytes; de client vroeg de server om een naam die de server niet kon oplossen. Huidige OpenSSH scp draagt standaard over via SFTP, en SFTP doet geen expansie in shellstijl zoals het oude protocol deed. De opdracht vanaf uw eigen account naar buiten volgen laat zien waar het pad werkelijk wordt geïnterpreteerd.

Begin bij het account en dan bij de map waarnaar het kan schrijven

De dubbele punt scheidt twee naamruimten, en alleen de linkerkant hoort bij de machine waarop u typt. Alles daarna wordt door de server opgelost, onder het account waarmee u zich hebt aangemeld, binnen de bestandssysteemweergave die dat account heeft. Bevestig beide voordat u de opdracht samenstelt, want een pad dat voor de beheerder correct is, is niet automatisch correct voor de overdrachtsgebruiker. Dat verschil is de bron van de meeste rechtenfouten die op netwerkstoringen lijken.

Vraag de server naar zijn eigen weergave: ssh [email protected] pwd en ssh [email protected] ls -ld /srv/archive. Als de tweede opdracht toestemming geweigerd meldt, is de tunnel in orde en is het pad voor dat account onbruikbaar. Herstel het eigendom of kies een andere bestemming in plaats van rechten te verruimen zodat de overdracht kan doorgaan.

Een beperkte SFTP-configuratie kan een chroot als de hoofdmap van het bestandssysteem tonen. Binnen die weergave is een absoluut pad absoluut binnen de chroot, wat niet dezelfde locatie is als de beheerder op de host ziet.

Benoem beide kanten van de dubbele punt expliciet

Een upload hoort de externe bestandsnaam te vermelden in plaats van aan te nemen dat de lokale basisnaam aan de andere kant acceptabel is.

scp q3-invoice.csv [email protected]:/home/transfer/drop/q3-invoice.csv

Een download hoort om precies dezelfde reden de lokale bestemming te vermelden. De twee naamruimten zijn onafhankelijk, en een script dat aanneemt dat ze overeenkomen, breekt de eerste keer dat de externe boom een andere indeling gebruikt.

scp [email protected]:/srv/archive/2026-q3.csv ./2026-q3.csv

Vermijd ~otheruser in een onderhouden script. Het uitbreiden van de thuismap van een ander account was een functie van de externe shell, en een SFTP-server implementeert de uitbreiding die dat nabootst misschien niet. Schrijf het absolute pad dat het account echt kan openen, en zet lokale paden met spaties tussen aanhalingstekens in plaats van aanhalingstekenslagen te kopiëren die voor een shell op de server zijn geschreven.

Weet welk protocol uw scp echt gebruikt

Sinds OpenSSH 9.0 gebruikt de client standaard SFTP, en distributies nemen dat gedrag over of backporten het volgens hun eigen planning. De versietekst vertelt wat de client van plan is, maar een leveranciersbuild kan van upstream afwijken, dus controleer de client die u echt uitvoert: ssh -V.

De twee protocollen lossen namen anders op. Oude SCP vraagt de externe gebruikersshell het pad uit te breiden, dus jokertekens en tildes worden door die shell volgens zijn eigen regels behandeld. SFTP geeft in plaats daarvan bestandsoverdrachtsbewerkingen uit, dus een jokerteken wordt of door de client uitgebreid of helemaal niet. Beide reizen binnen SSH naar dezelfde machine, waardoor één host zich onder twee clients anders kan gedragen.

scp -v drukt het subsysteem af dat het aanvraagt, en een sftp-subsysteemregel bevestigt dat het moderne pad wordt gebruikt. scp -O dwingt het oude protocol af waar het wordt ondersteund en echt nodig is, en het brengt zijn eigen aanhalingstekenregels mee terug. Het is geen VPN-optie, geen manier om iets op de server in te schakelen en geen reden om de hostsleutelcontrole te versoepelen.

Test het pad voordat het script erop vertrouwt

Een padprobleem komt op het slechtst mogelijke moment aan het licht, in een geautomatiseerde taak 's nachts zonder dat iemand kijkt. Bewijs de bestemming eerst met een klein bestand en het exacte account dat de taak gebruikt, en houd die testopdracht naast de taakdefinitie. Als de test een ander account of een andere map nodig heeft, heeft de taak dat ook nodig.

Controleer ook de serverkant. grep -i subsystem /etc/ssh/sshd_config toont of een SFTP-subsysteem is geconfigureerd, en sftp -b /dev/null [email protected] eindigt alleen met succes wanneer dat subsysteem antwoordt. Een host die SSH-aanmeldingen accepteert maar geen subsysteem heeft, faalt bij elke moderne overdracht terwijl hij in een aanmeldingstest volledig gezond lijkt.

Noteer de clientversie, het gebruikte protocol en het absolute externe pad in de taaknotities. Wanneer de volgende upgrade een standaardwaarde wijzigt, is die notitie het verschil tussen een correctie van vijf minuten en een middag gissen.

Gerelateerde artikelen