Ukaz scp, ki je leta deloval v skriptu, lahko na sedanjem odjemalcu odpove s potjo napako, ki nima nič skupnega s tunelom. VPN je prenesel bajte; odjemalec je strežniku poslal ime, ki ga strežnik ni mogel razrešiti. Sedanji OpenSSH scp privzeto prenaša prek SFTP, SFTP pa ne izvaja razširitve v slogu lupine kot stari protokol. Sledenje ukazu od lastnega računa navzven pokaže, kje se pot v resnici interpretira.

Začnite pri računu, nato pri imeniku, v katerega lahko piše

Dvopičje ločuje dva imenska prostora in samo leva stran pripada stroju, na katerem tipkate. Vse za njim razreši strežnik, pod računom, s katerim ste se overili, znotraj pogleda na datotečni sistem, ki ga ima ta račun. Potrdite oboje, preden sestavite ukaz, ker pot, ki je pravilna za skrbnika, ni samodejno pravilna za uporabnika prenosa. Ta razlika je vir večine napak z dovoljenji, ki izgledajo kot omrežne okvare.

Vprašajte strežnik po njegovem lastnem pogledu: ssh [email protected] pwd in ssh [email protected] ls -ld /srv/archive. Če drugi ukaz sporoči zavrnjeno dovoljenje, je tunel v redu in pot za ta račun ni uporabna. Popravite lastništvo ali izberite drug cilj, namesto da bi razširili dovoljenja, da bi se prenos lahko nadaljeval.

Omejena konfiguracija SFTP lahko predstavi chroot kot koren datotečnega sistema. Znotraj tega pogleda je absolutna pot absolutna znotraj chroota, kar ni isto mesto, kot ga skrbnik vidi na gostitelju.

Imenujte obe strani dvopičja izrecno

Prenos navzgor bi moral navesti oddaljeno ime datoteke, namesto da predpostavi, da bo lokalno osnovno ime na drugi strani sprejemljivo.

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

Prenos navzdol bi moral navesti lokalni cilj iz povsem istega razloga. Dva imenska prostora sta neodvisna in skript, ki predpostavlja, da se ujemata, se prvič zlomi, ko oddaljeno drevo uporabi drugačno razporeditev.

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

Izogibajte se ~otheruser v vzdrževanem skriptu. Razširitev domačega imenika drugega računa je bila funkcija oddaljene lupine in strežnik SFTP morda ne izvaja razširitve, ki jo posnema. Napišite absolutno pot, ki jo račun resnično lahko odpre, in lokalne poti s presledki postavite v narekovaje, namesto da kopirate plasti narekovajev, napisane za lupino na strežniku.

Vedite, kateri protokol vaš scp resnično uporablja

Od OpenSSH 9.0 odjemalec privzeto uporablja SFTP, distribucije pa to vedenje prevzamejo ali prenesejo nazaj po svojem urniku. Niz različice pove, kaj odjemalec namerava, a gradnja ponudnika se lahko razlikuje od upstreama, zato preverite odjemalca, ki ga resnično izvajate: ssh -V.

Dva protokola razrešujeta imena različno. Stari SCP prosi oddaljeno uporabniško lupino, naj razširi pot, zato nadomestne znake in tilde obravnava ta lupina po svojih pravilih. SFTP namesto tega izda operacije prenosa datotek, zato nadomestni znak bodisi razširi odjemalec bodisi se sploh ne razširi. Oba potujeta znotraj SSH do istega stroja, zato se lahko en gostitelj obnaša drugače pod dvema odjemalcema.

scp -v izpiše podsistem, ki ga zahteva, vrstica podsistema sftp pa potrdi, da se uporablja sodobna pot. scp -O vsili stari protokol tam, kjer je podprt in resnično potreben, in s seboj prinese lastna pravila narekovajev. To ni možnost VPN, ni način, da na strežniku kaj omogočite, in ni razlog za omilitev preverjanja gostiteljskega ključa.

Preizkusite pot, preden se skript nanjo zanese

Težava s potjo se pokaže v najslabšem možnem trenutku, v samodejnem opravilu ponoči, ko nihče ne gleda. Najprej dokažite cilj z majhno datoteko in točnim računom, ki ga opravilo uporablja, in ta preskusni ukaz hranite ob definiciji opravila. Če preskus potrebuje drug račun ali drug imenik, ju bo potrebovalo tudi opravilo.

Preverite tudi strežniško stran. grep -i subsystem /etc/ssh/sshd_config pokaže, ali je konfiguriran podsistem SFTP, sftp -b /dev/null [email protected] pa se uspešno konča le, ko ta podsistem odgovori. Gostitelj, ki sprejema prijave SSH, a nima podsistema, odpove pri vsakem sodobnem prenosu, medtem ko je v preskusu prijave videti popolnoma zdrav.

V opombe opravila zapišite različico odjemalca, uporabljeni protokol in absolutno oddaljeno pot. Ko bo naslednja nadgradnja spremenila privzeto vrednost, bo ta opomba razlika med petminutnim popravkom in popoldnevom ugibanja.

Sorodni članki