En scp-kommando som fungerte i et skript i årevis, kan mislykkes på en aktuell klient med en stifeil som ikke har noe med tunnelen å gjøre. VPN-en fraktet bytene; klienten ba serveren om et navn serveren ikke kunne løse opp. Aktuell OpenSSH-scp overfører som standard via SFTP, og SFTP gjør ikke skallet stil-utvidelse slik den gamle protokollen gjorde. Å følge kommandoen ut fra din egen konto viser hvor stien faktisk tolkes.

Start med kontoen, deretter katalogen den kan skrive i

Kolonnen deler to navnerom, og bare venstre side tilhører maskinen du skriver på. Alt etter den løses opp av serveren, under kontoen du autentiserte som, innenfor den filsystemvisningen den kontoen har. Bekreft begge før du setter sammen kommandoen, fordi en sti som er riktig for administratoren ikke automatisk er riktig for overføringsbrukeren. Den forskjellen er kilden til de fleste tillatelsesfeil som ser ut som nettverksfeil.

Spør serveren om dens egen visning: ssh [email protected] pwd og ssh [email protected] ls -ld /srv/archive. Hvis den andre kommandoen rapporterer at tilgang er nektet, er tunnelen i orden og stien ubrukelig for den kontoen. Rett opp eierskapet eller velg en annen destinasjon i stedet for å utvide tillatelser slik at overføringen kan fortsette.

En begrenset SFTP-konfigurasjon kan presentere en chroot som filsystemets rot. Innenfor den visningen er en absolutt sti absolutt innenfor chrooten, noe som ikke er samme sted som administratoren ser på verten.

Navngi begge sider av kolonnen eksplisitt

En opplasting bør oppgi det eksterne filnavnet i stedet for å anta at det lokale basisnavnet vil bli akseptert på den andre siden.

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

En nedlasting bør oppgi den lokale destinasjonen av nøyaktig samme grunn. De to navnerommene er uavhengige, og et skript som antar at de passer sammen, knekker første gang det eksterne treet bruker en annen struktur.

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

Unngå ~otheruser i et vedlikeholdt skript. Å utvide hjemmekatalogen til en annen konto var en eksternskall-funksjon, og en SFTP-server implementerer kanskje ikke utvidelsen som etterligner den. Skriv den absolutte stien kontoen faktisk kan åpne, og sett lokale stier med mellomrom i anførselstegn i stedet for å kopiere anførselstegnslag skrevet for et skall på serveren.

Vit hvilken protokoll din scp faktisk bruker

Siden OpenSSH 9.0 bruker klienten SFTP som standard, og distribusjoner tar i bruk eller backporterer den oppførselen etter sin egen tidsplan. Versjonsstrengen forteller hva klienten har tenkt, men en leverandørbygg kan avvike fra upstream, så sjekk klienten du faktisk kjører: ssh -V.

De to protokollene løser opp navn forskjellig. Gammel SCP ber det eksterne brukerskallet utvide stien, så jokertegn og tilder håndteres av det skallet etter egne regler. SFTP utsteder i stedet filoverføringsoperasjoner, så et jokertegn blir enten utvidet av klienten eller ikke utvidet i det hele tatt. Begge reiser inne i SSH til samme maskin, og derfor kan én vert oppføre seg forskjellig under to klienter.

scp -v skriver ut undersystemet den ber om, og en sftp-undersystemlinje bekrefter at den moderne stien brukes. scp -O tvinger den gamle protokollen der den støttes og virkelig kreves, og den tar med seg sine egne anførselstegnregler tilbake. Det er ikke et VPN-alternativ, ikke en måte å aktivere noe på serveren, og ikke en grunn til å lempe på vertsnøkkelkontrollen.

Test stien før skriptet avhenger av den

Et stiproblem dukker opp på det verst tenkelige tidspunktet, i en automatisert jobb om natten uten noen som ser på. Bevis destinasjonen først med en liten fil og den nøyaktige kontoen jobben bruker, og hold den testkommandoen ved siden av jobbdefinisjonen. Hvis testen trenger en annen konto eller en annen katalog, trenger jobben det også.

Sjekk serversiden også. grep -i subsystem /etc/ssh/sshd_config viser om et SFTP-undersystem er konfigurert, og sftp -b /dev/null [email protected] avsluttes bare vellykket når det undersystemet svarer. En vert som godtar SSH-innlogginger men ikke har noe undersystem, feiler på hver moderne overføring mens den ser helt sunn ut i en innloggingstest.

Noter klientversjonen, protokollen som brukes og den absolutte eksterne stien i jobbnotatene. Når neste oppgradering endrer en standardverdi, er det notatet forskjellen mellom en fem minutters rettelse og en ettermiddag med gjetting.

Relaterte artikler