scp dros SFTP: ysgrifennu llwybrau o bell sy'n datrys go iawn
Mae scp modern yn trosglwyddo drwy SFTP, felly mae ehangu tilde a wildcards yn ymddwyn yn wahanol. Ysgrifennwch lwybrau gweinydd penodol a dewiswch y protocol yn fwriadol.
Gall gorchymyn scp a weithiodd mewn sgript am flynyddoedd fethu ar gleient cyfredol gyda gwall llwybr heb ddim i'w wneud â'r twnnel. Roedd y VPN wedi cario'r beitiau; gofynnodd y cleient i'r gweinydd am enw na allai'r gweinydd ei ddatrys. Mae scp OpenSSH cyfredol yn trosglwyddo drwy SFTP yn ddiofyn, ac nid yw SFTP yn gwneud ehangu ar ffurf plisgyn fel y gwnaeth y protocol hen. Mae dilyn y gorchymyn allan o'ch cyfrif eich hun yn dangos ble mae'r llwybr yn cael ei ddehongli mewn gwirionedd.
Dechreuwch o'r cyfrif, yna o'r cyfeiriadur y gall ei ysgrifennu
Mae'r colon yn rhannu dau ofod enw, a dim ond yr ochr chwith sy'n perthyn i'r peiriant rydych chi'n teipio arno. Mae popeth ar ôl hynny'n cael ei ddatrys gan y gweinydd, o dan y cyfrif y gwnaethoch ei ddilysu, y tu mewn i ba bynnag olwg o'r system ffeiliau sydd gan y cyfrif hwnnw. Cadarnhewch y ddau cyn llunio'r gorchymyn, oherwydd nid yw llwybr sy'n gywir i'r gweinyddwr yn awtomatig yn gywir i'r defnyddiwr trosglwyddo. Y gwahaniaeth hwnnw yw ffynhonnell y rhan fwyaf o wallau caniatâd sy'n edrych fel diffygion rhwydwaith.
Gofynnwch i'r gweinydd am ei olwg ei hun: ssh [email protected] pwd a ssh [email protected] ls -ld /srv/archive. Os yw'r ail orchymyn yn adrodd caniatâd wedi'i wrthod, mae'r twnnel yn iawn ac mae'r llwybr yn anfuddiol i'r cyfrif hwnnw. Trwsiwch berchnogaeth neu dewiswch gyrchfan wahanol yn lle ehangu caniatâd fel y gall y trosglwyddiad fynd rhagddo.
Gall ffurfweddiad SFTP cyfyngedig gyflwyno chroot fel gwraidd y system ffeiliau. Y tu mewn i'r olwg honno mae llwybr absoliwt yn absoliwt o fewn y chroot, nad yw'n yr un lleoliad ag y mae'r gweinyddwr yn ei weld ar y gwesteiwr.
Enwch y ddwy ochr i'r colon yn benodol
Dylai uwchlwytho nodi enw'r ffeil o bell yn lle rhagdybio y bydd yr enw sylfaenol lleol yn dderbyniol yr ochr draw.
scp q3-invoice.csv [email protected]:/home/transfer/drop/q3-invoice.csvDylai lawrlwytho nodi'r gyrchfan leol am yr un rheswm yn union. Mae'r ddau ofod enw'n annibynnol, ac mae sgript sy'n rhagdybio eu bod yn cyfateb yn torri'r tro cyntaf y bydd y goeden o bell yn defnyddio cynllun gwahanol.
scp [email protected]:/srv/archive/2026-q3.csv ./2026-q3.csvOsgowch ~otheruser mewn sgript sy'n cael ei chynnal. Roedd ehangu cyfeiriadur cartref cyfrif arall yn nodwedd plisgyn o bell, ac efallai na fydd gweinydd SFTP yn gweithredu'r estyniad sy'n ei efelychu. Ysgrifennwch y llwybr absoliwt y gall y cyfrif ei agor mewn gwirionedd, a dyfynnwch lwybrau lleol sy'n cynnwys bylchau yn lle copïo haenau dyfynnu a ysgrifennwyd ar gyfer plisgyn ar y gweinydd.
Gwybyddwch pa brotocol y mae eich scp yn ei ddefnyddio mewn gwirionedd
Ers OpenSSH 9.0 mae'r cleient yn defnyddio SFTP yn ddiofyn, ac mae dosbarthiadau'n mabwysiadu neu'n ôl-bortio'r ymddygiad hwnnw ar eu hamserlen eu hunain. Mae'r llinyn fersiwn yn dweud wrthych beth y mae'r cleient yn bwriadu ei wneud, ond gall adeilad gwerthwr fod yn wahanol i upstream, felly gwiriwch y cleient rydych chi'n ei redeg mewn gwirionedd: ssh -V.
Mae'r ddau brotocol yn datrys enwau'n wahanol. Mae SCP hen yn gofyn i blisgyn y defnyddiwr o bell ehangu'r llwybr, felly mae'r plisgyn hwnnw'n trin wildcards a tildes yn ôl ei reolau ei hun. Mae SFTP yn hytrach yn cyhoeddi gweithrediadau trosglwyddo ffeiliau, felly mae wildcard naill ai'n cael ei ehangu gan y cleient neu ddim yn cael ei ehangu o gwbl. Mae'r ddau'n teithio y tu mewn i SSH i'r un peiriant, a dyna pam y gall un gwesteiwr ymddwyn yn wahanol o dan ddau gleient.
Mae scp -v yn argraffu'r is-system y mae'n gofyn amdani, ac mae llinell is-system sftp yn cadarnhau bod y llwybr modern yn cael ei ddefnyddio. Mae scp -O yn gorfodi'r protocol hen lle mae'n cael ei gefnogi ac yn wirioneddol angenrheidiol, ac mae'n dod â'i reolau dyfynnu ei hun yn ôl gydag ef. Nid yw'n opsiwn VPN, nid yw'n ffordd i alluogi unrhyw beth ar y gweinydd, ac nid yw'n rheswm i lacio gwirio allwedd gwesteiwr.
Profwch y llwybr cyn i'r sgript ddibynnu arno
Mae problem llwybr yn dod i'r amlwg ar yr adeg waethaf posibl, mewn swydd awtomatig yn y nos heb neb yn gwylio. Profwch y gyrchfan yn gyntaf gyda ffeil fach a'r union gyfrif y mae'r swydd yn ei ddefnyddio, a chadwch y gorchymyn prawf hwnnw wrth ddiffiniad y swydd. Os oes angen cyfrif gwahanol neu gyfeiriadur gwahanol ar y prawf, bydd angen un ar y swydd hefyd.
Gwiriwch ochr y gweinydd hefyd. Mae grep -i subsystem /etc/ssh/sshd_config yn dangos a oes is-system SFTP wedi'i ffurfweddu, ac mae sftp -b /dev/null [email protected] yn gorffen yn llwyddiannus dim ond pan fydd yr is-system honno'n ateb. Mae gwesteiwr sy'n derbyn mewngofnodion SSH ond heb is-system yn methu pob trosglwyddiad modern tra'n edrych yn berffaith iach mewn prawf mewngofnodi.
Cofnodwch fersiwn y cleient, y protocol sy'n cael ei ddefnyddio a'r llwybr o bell absoliwt yn nodiadau'r swydd. Pan fydd y diweddariad nesaf yn newid diofyn, y nodyn hwnnw yw'r gwahaniaeth rhwng trwsio pum munud a phrynhawn o ddyfalu.