scp over SFTP: skrive eksterne stiar som faktisk blir løyste opp
Moderne scp overfører via SFTP, så tilde-utviding og jokerteikn oppfører seg annleis. Skriv eksplisitte serverstiar og vel protokollen med vilje.
Ein scp-kommando som fungerte i eit skript i årevis, kan mislykkast på ein aktuell klient med ein stifeil som ikkje har noko med tunnelen å gjere. VPN-en frakta bytene; klienten bad serveren om eit namn serveren ikkje kunne løysa opp. Aktuell OpenSSH-scp overfører som standard via SFTP, og SFTP gjer ikkje skal-stil-utviding slik den gamle protokollen gjorde. Å følgje kommandoen ut frå din eigen konto viser kvar stien faktisk blir tolka.
Start med kontoen, deretter mappa han kan skrive i
Kolonnen deler to namnerom, og berre venstre side høyrer til maskinen du skriv på. Alt etter den blir løyst opp av serveren, under kontoen du autentiserte som, innanfor den filsystemvisinga den kontoen har. Stadfest begge før du set saman kommandoen, fordi ein sti som er rett for administratoren ikkje automatisk er rett for overføringsbrukaren. Den skilnaden er kjelda til dei fleste løyvefeila som ser ut som nettverksfeil.
Spør serveren om si eiga vising: ssh [email protected] pwd og ssh [email protected] ls -ld /srv/archive. Viss den andre kommandoen rapporterer at tilgang er nekta, er tunnelen i orden og stien ubrukeleg for den kontoen. Rett opp eigarskapet eller vel ein annan destinasjon i staden for å utvide løyve slik at overføringa kan halde fram.
Ein avgrensa SFTP-konfigurasjon kan presentere ein chroot som rota av filsystemet. Innanfor den visinga er ein absolutt sti absolutt innanfor chrooten, noko som ikkje er same stad som administratoren ser på verten.
Namngje begge sidene av kolonnen eksplisitt
Ei opplasting bør oppgje det eksterne filnamnet i staden for å anta at det lokale basisnamnet blir godteke på den andre sida.
scp q3-invoice.csv [email protected]:/home/transfer/drop/q3-invoice.csvEi nedlasting bør oppgje den lokale destinasjonen av nøyaktig same grunn. Dei to namneromma er uavhengige, og eit skript som antar at dei passar saman, knekk første gong det eksterne treet brukar ein annan struktur.
scp [email protected]:/srv/archive/2026-q3.csv ./2026-q3.csvUnngå ~otheruser i eit vedlikehalde skript. Å utvide heimemappa til ein annan konto var ein eksternskal-funksjon, og ein SFTP-server implementerer kanskje ikkje utvidinga som etterliknar han. Skriv den absolutte stien kontoen faktisk kan opne, og set lokale stiar med mellomrom i hermeteikn i staden for å kopiere hermeteiknslag skrivne for ein skal på serveren.
Vit kva protokoll din scp faktisk brukar
Sidan OpenSSH 9.0 brukar klienten SFTP som standard, og distribusjonar tek i bruk eller backportar den åtferda etter sin eigen tidsplan. Versjonsstrengen fortel kva klienten har tenkt, men ein leverandørbygg kan avvike frå upstream, så sjekk klienten du faktisk køyrer: ssh -V.
Dei to protokollane løyser opp namn ulikt. Gammal SCP ber det eksterne brukarskalet utvide stien, så jokerteikn og tildar blir handsama av det skalet etter eigne reglar. SFTP gjev i staden ut filoverføringsoperasjonar, så eit jokerteikn blir anten utvida av klienten eller ikkje utvida i det heile. Begge reiser inne i SSH til same maskin, og difor kan ein vert oppføre seg annleis under to klientar.
scp -v skriv ut undersystemet det ber om, og ei sftp-undersystemlinje stadfestar at den moderne stien blir brukt. scp -O tvingar den gamle protokollen der han er støtta og verkeleg kravd, og han tek med seg sine eigne hermeteiknreglar tilbake. Det er ikkje eit VPN-alternativ, ikkje ein måte å aktivere noko på serveren, og ikkje ein grunn til å lempe på vertsnøkkelkontrollen.
Test stien før skriptet er avhengig av han
Eit stifelle dukkar opp på det verst tenkelege tidspunktet, i ein automatisert jobb om natta utan nokon som ser på. Prov destinasjonen først med ei lita fil og den nøyaktige kontoen jobben brukar, og hald den testkommandoen ved sida av jobbdefinisjonen. Viss testen treng ein annan konto eller ei anna mappe, treng jobben det òg.
Sjekk serversida òg. grep -i subsystem /etc/ssh/sshd_config viser om eit SFTP-undersystem er konfigurert, og sftp -b /dev/null [email protected] avsluttar berre vellukka når det undersystemet svarar. Ein vert som godtek SSH-innloggingar men ikkje har noko undersystem, feilar på kvar moderne overføring medan han ser heilt sunn ut i ein innloggingstest.
Noter klientversjonen, protokollen som blir brukt og den absolutte eksterne stien i jobbnotata. Når neste oppgradering endrar ein standardverdi, er det notatet skilnaden mellom ei fem minutts retting og ein ettermiddag med gjetting.