scp përmes SFTP: shkrimi i shtigjeve të largëta që zgjidhen vërtet
scp modern transferon përmes SFTP, prandaj zgjerimi i tildës dhe karakteret e gjera sillen ndryshe. Shkruani shtigje serveri të qarta dhe zgjidhni protokollin me qëllim.
Një komandë scp që punoi në një skript për vite mund të dështojë në një klient aktual me një gabim shtegu që nuk ka asnjë lidhje me tunelin. VPN-ja i transportoi bajtët; klienti i kërkoi serverit një emër që serveri nuk mund ta zgjidhte. scp aktual i OpenSSH transferon si parazgjedhje përmes SFTP, dhe SFTP nuk bën zgjerim në stil shell si protokolli i vjetër. Ndjekja e komandës nga llogaria juaj drejt jashtë tregon se ku shtegu interpretohet vërtet.
Filloni nga llogaria, pastaj nga drejtoria ku mund të shkruajë
Dy pikat ndajnë dy hapësira emrash, dhe vetëm ana e majtë i përket makinës ku po shkruani. Gjithçka pas saj zgjidhet nga serveri, nën llogarinë me të cilën u vërtetuat, brenda asaj pamjeje të sistemit të skedarëve që ka ajo llogari. Konfirmoni të dyja përpara se të hartoni komandën, sepse një shteg i saktë për administratorin nuk është automatikisht i saktë për përdoruesin e transferimit. Ky ndryshim është burimi i shumicës së gabimeve të lejeve që duken si defekte rrjeti.
Pyetni serverin për pamjen e vet: ssh [email protected] pwd dhe ssh [email protected] ls -ld /srv/archive. Nëse komanda e dytë raporton leje të refuzuar, tuneli është në rregull dhe shtegu është i papërdorshëm për atë llogari. Rregulloni pronësinë ose zgjidhni një destinacion tjetër në vend të zgjerimit të lejeve që transferimi të mund të vazhdojë.
Një konfigurim i kufizuar i SFTP mund të paraqesë një chroot si rrënjë e sistemit të skedarëve. Brenda asaj pamjeje një shteg absolut është absolut brenda chroot, që nuk është i njëjti vend që administratori sheh në host.
Emërtoni shprehimisht të dyja anët e dy pikave
Një ngarkim duhet të tregojë emrin e skedarit të largët në vend që të supozojë se emri bazë lokal do të jetë i pranueshëm në anën tjetër.
scp q3-invoice.csv [email protected]:/home/transfer/drop/q3-invoice.csvNjë shkarkim duhet të tregojë destinacionin lokal për të njëjtën arsye. Dy hapësirat e emrave janë të pavarura, dhe një skript që supozon se përputhen prishet herën e parë që pema e largët përdor një plan tjetër.
scp [email protected]:/srv/archive/2026-q3.csv ./2026-q3.csvShmangni ~otheruser në një skript të mirëmbajtur. Zgjerimi i drejtorisë shtëpiake të një llogarie tjetër ishte veçori e shell-it të largët, dhe serveri SFTP mund të mos implementojë zgjerimin që e imiton. Shkruani shtegun absolut që llogaria mund ta hapë vërtet, dhe vendosni në thonjëza shtigjet lokale me hapësira në vend që të kopjoni shtresa thonjëzash të shkruara për një shell në server.
Dijeni se çfarë protokolli përdor vërtet scp-ja juaj
Që nga OpenSSH 9.0 klienti përdor SFTP si parazgjedhje, dhe shpërndarjet e miratojnë ose e sjellin mbrapsht atë sjellje sipas kalendarit të tyre. Vargu i versionit tregon çfarë synon klienti, por një ndërtim furnizuesi mund të ndryshojë nga upstream, prandaj kontrolloni klientin që ekzekutoni vërtet: ssh -V.
Dy protokollet i zgjidhin emrat ndryshe. SCP i vjetër i kërkon shell-it të përdoruesit të largët të zgjerojë shtegun, prandaj karakteret e gjera dhe tildat trajtohen nga ai shell sipas rregullave të veta. SFTP në vend të kësaj lëshon operacione transferimi skedarësh, prandaj një karakter i gjerë ose zgjerohet nga klienti ose nuk zgjerohet fare. Të dy udhëtojnë brenda SSH drejt të njëjtës makinë, dhe për këtë arsye një host mund të sillet ndryshe nën dy klientë.
scp -v shtyp nënsistemin që kërkon, dhe një rresht nënsistemi sftp konfirmon se shtegu modern është në përdorim. scp -O imponon protokollin e vjetër aty ku mbështetet dhe kërkohet vërtet, dhe sjell me vete rregullat e veta të thonjëzimit. Nuk është opsion VPN, nuk është mënyrë për të aktivizuar diçka në server, dhe nuk është arsye për të lehtësuar kontrollin e çelësit të hostit.
Testoni shtegun përpara se skripti të mbështetet tek ai
Një problem shtegu shfaqet në momentin më të keq të mundshëm, në një punë të automatizuar natën pa askush duke shikuar. Vërtetoni destinacionin së pari me një skedar të vogël dhe llogarinë e saktë që përdor puna, dhe mbani atë komandë testuese pranë përkufizimit të punës. Nëse testi kërkon një llogari tjetër ose një drejtori tjetër, edhe puna do t'i ketë nevojë.
Kontrolloni edhe anën e serverit. grep -i subsystem /etc/ssh/sshd_config tregon nëse është konfiguruar një nënsistem SFTP, dhe sftp -b /dev/null [email protected] përfundon me sukses vetëm kur ai nënsistem përgjigjet. Një host që pranon hyrje SSH por nuk ka nënsistem dështon në çdo transferim modern ndërsa duket plotësisht i shëndetshëm në një test hyrjeje.
Regjistroni versionin e klientit, protokollin në përdorim dhe shtegun absolut të largët në shënimet e punës. Kur përditësimi i ardhshëm të ndryshojë një parazgjedhje, ai shënim është ndryshimi midis një rregullimi pesë minutash dhe një pasdite me hamendje.