scp-komento, joka toimi skriptissä vuosia, voi epäonnistua nykyisellä asiakkaalla polkuvirheeseen, jolla ei ole mitään tekemistä tunnelin kanssa. VPN kuljetti tavut; asiakas pyysi palvelimelta nimeä, jota palvelin ei pystynyt ratkaisemaan. Nykyinen OpenSSH scp siirtää oletuksena SFTP:n kautta, eikä SFTP tee kuoren kaltaista laajennusta kuten vanha protokolla. Komennon seuraaminen omalta tililtä ulospäin näyttää, missä polkua todella tulkitaan.

Aloita tilistä ja sitten hakemistosta, johon se voi kirjoittaa

Kaksoispiste erottaa kaksi nimiavaruutta, ja vain vasen puoli kuuluu koneelle, jolla kirjoitat. Kaikki sen jälkeen palvelin ratkaisee, sen tilin alla, jolla todensit itsesi, siinä tiedostojärjestelmän näkymässä, joka tilillä on. Vahvista molemmat ennen komennon kokoamista, koska ylläpitäjälle oikea polku ei ole automaattisesti oikea siirtokäyttäjälle. Tämä ero on useimpien verkkohäiriöiltä näyttävien käyttöoikeusvirheiden lähde.

Kysy palvelimelta sen omaa näkymää: ssh [email protected] pwd ja ssh [email protected] ls -ld /srv/archive. Jos toinen komento ilmoittaa käyttöoikeuden evätyksi, tunneli on kunnossa ja polku on käyttökelvoton kyseiselle tilille. Korjaa omistus tai valitse toinen kohde sen sijaan, että laajentaisit käyttöoikeuksia siirron jatkumiseksi.

Rajoitettu SFTP-kokoonpano voi esittää chrootin tiedostojärjestelmän juurena. Tässä näkymässä absoluuttinen polku on absoluuttinen chrootin sisällä, mikä ei ole sama sijainti, jonka ylläpitäjä näkee isännässä.

Nimeä kaksoispisteen molemmat puolet eksplisiittisesti

Latauksen tulisi ilmoittaa etätiedoston nimi sen sijaan, että olettaisi paikallisen perusnimen olevan hyväksyttävä toisella puolella.

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

Lataamisen tulisi ilmoittaa paikallinen kohde täsmälleen samasta syystä. Kaksi nimiavaruutta ovat riippumattomia, ja skripti, joka olettaa niiden täsmäävän, hajoaa ensimmäisen kerran, kun etäpuu käyttää erilaista asettelua.

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

Vältä ~otheruser ylläpidettävässä skriptissä. Toisen tilin kotihakemiston laajentaminen oli etäkuoren ominaisuus, eikä SFTP-palvelin välttämättä toteuta sitä jäljittelevää laajennusta. Kirjoita absoluuttinen polku, jonka tili todella voi avata, ja laita välilyöntejä sisältävät paikalliset polut lainausmerkkeihin sen sijaan, että kopioisit palvelimen kuorta varten kirjoitettuja lainausmerkkerroksia.

Tiedä, mitä protokollaa scp:si todella käyttää

OpenSSH 9.0:sta lähtien asiakas käyttää oletuksena SFTP:tä, ja jakelut omaksuvat tai backporttaavat tämän käyttäytymisen omalla aikataulullaan. Versiomerkkijono kertoo, mitä asiakas aikoo, mutta toimittajan koontiversio voi poiketa upstreamista, joten tarkista asiakas, jota todella ajat: ssh -V.

Kaksi protokollaa ratkaisevat nimet eri tavalla. Vanha SCP pyytää etäkäyttäjän kuorta laajentamaan polun, joten jokerimerkit ja tildet käsittelee tuo kuori omilla säännöillään. SFTP puolestaan lähettää tiedostonsiirtotoimintoja, joten jokerimerkin joko asiakas laajentaa tai sitä ei laajenneta lainkaan. Molemmat kulkevat SSH:n sisällä samalle koneelle, minkä vuoksi yksi isäntä voi käyttäytyä eri tavalla kahden asiakkaan alla.

scp -v tulostaa pyytämänsä alijärjestelmän, ja sftp-alijärjestelmärivi vahvistaa, että nykyaikaista polkua käytetään. scp -O pakottaa vanhan protokollan siellä, missä sitä tuetaan ja todella tarvitaan, ja tuo mukanaan omat lainausmerkkisäännöt. Se ei ole VPN-asetus, ei tapa ottaa jotain käyttöön palvelimella eikä syy löysätä isäntäavaimen tarkistusta.

Testaa polku ennen kuin skripti riippuu siitä

Polkuongelma tulee esiin pahimmalla mahdollisella hetkellä, automaattisessa yötyössä ilman ketään katsomassa. Todista kohde ensin pienellä tiedostolla ja täsmälleen sillä tilillä, jota työ käyttää, ja pidä testikomento työn määritelmän vieressä. Jos testi tarvitsee toisen tilin tai toisen hakemiston, työ tarvitsee myös.

Tarkista myös palvelinpuoli. grep -i subsystem /etc/ssh/sshd_config näyttää, onko SFTP-alijärjestelmä määritetty, ja sftp -b /dev/null [email protected] päättyy onnistuneesti vain, kun tuo alijärjestelmä vastaa. Isäntä, joka hyväksyy SSH-kirjautumiset mutta jolla ei ole alijärjestelmää, epäonnistuu jokaisessa nykyaikaisessa siirrossa näyttäen samalla kirjautumistestissä täysin terveeltä.

Kirjaa asiakkaan versio, käytössä oleva protokolla ja absoluuttinen etäpolku työn muistiinpanoihin. Kun seuraava päivitys muuttaa oletusta, tuo muistiinpano on ero viiden minuutin korjauksen ja arvailun täyteisen iltapäivän välillä.

Aiheeseen liittyvät artikkelit