scp հրամանը, որը տարիներ շարունակ աշխատում էր սկրիպտում, կարող է ձախողվել ընթացիկ հաճախորդում ուղու սխալով, որը կապ չունի թունելի հետ։ VPN-ը տեղափոխեց բայթերը՝ հաճախորդը սերվերից պահանջեց անուն, որը սերվերը չկարողացավ լուծել։ Ընթացիկ OpenSSH scp-ն լռելյայն փոխանցում է SFTP-ի միջոցով, իսկ SFTP-ն չի կատարում shell-աձև ընդլայնում, ինչպես հին արձանագրությունը։ Հրամանը ձեր սեփական հաշվից դեպի դուրս հետևելը ցույց է տալիս, թե որտեղ է ուղին իրականում մեկնաբանվում։

Սկսեք հաշվից, ապա այն պանակից, որտեղ այն կարող է գրել

Երկու կետը բաժանում է երկու անվանատարածք, և միայն ձախ կողմն է պատկանում այն մեքենային, որի վրա դուք մուտքագրում եք։ Դրանից հետո ամեն ինչ լուծում է սերվերը՝ այն հաշվի ներքո, որով նույնականացել եք, այն ֆայլային համակարգի տեսքի ներսում, որն ունի այդ հաշիվը։ Հաստատեք երկուսն էլ նախքան հրամանը կազմելը, որովհետև ադմինիստրատորի համար ճիշտ ուղին ինքնաբերաբար ճիշտ չէ փոխանցման օգտատիրոջ համար։ Այդ տարբերությունն է ցանցային խափանումների նման թվացող թույլտվության սխալների մեծ մասի աղբյուրը։

Հարցրեք սերվերին իր սեփական տեսքի մասին՝ ssh [email protected] pwd և ssh [email protected] ls -ld /srv/archive։ Եթե երկրորդ հրամանը հաղորդում է թույլտվության մերժում, թունելը կարգին է, և ուղին անօգտագործելի է այդ հաշվի համար։ Ուղղեք սեփականությունը կամ ընտրեք այլ նպատակակետ՝ թույլտվությունները լայնացնելու փոխարեն, որպեսզի փոխանցումը կարողանա շարունակվել։

Սահմանափակ SFTP կոնֆիգուրացիան կարող է chroot-ը ներկայացնել որպես ֆայլային համակարգի արմատ։ Այդ տեսքի ներսում բացարձակ ուղին բացարձակ է chroot-ի ներսում, ինչը նույն տեղը չէ, ինչ ադմինիստրատորը տեսնում է հոսթի վրա։

Հստակորեն անվանեք երկու կետի երկու կողմերը

Վերբեռնումը պետք է նշի հեռավոր ֆայլի անունը՝ փոխարենը ենթադրելու, որ տեղական հիմնական անունը ընդունելի կլինի մյուս կողմում։

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

Ներբեռնումը պետք է նշի տեղական նպատակակետը հենց նույն պատճառով։ Երկու անվանատարածքներն անկախ են, և սկրիպտը, որը ենթադրում է դրանց համընկնումը, կոտրվում է առաջին անգամ, երբ հեռավոր ծառը օգտագործում է այլ դասավորություն։

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

Խուսափեք ~otheruser-ից պահպանվող սկրիպտում։ Այլ հաշվի տնային պանակի ընդլայնումը հեռավոր shell-ի հատկություն էր, և SFTP սերվերը կարող է չիրականացնել այն ընդլայնումը, որը նմանակում է դրան։ Գրեք բացարձակ ուղին, որը հաշիվը իսկապես կարող է բացել, և բացատներ պարունակող տեղական ուղիները դրեք չակերտների մեջ՝ սերվերի shell-ի համար գրված չակերտների շերտերը պատճենելու փոխարեն։

Իմացեք, թե ձեր scp-ն իրականում որ արձանագրությունն է օգտագործում

OpenSSH 9.0-ից ի վեր հաճախորդը լռելյայն օգտագործում է SFTP, և դիստրիբուտիվները ընդունում կամ հետադարձ ներմուծում են այդ վարքը իրենց ժամանակացույցով։ Տարբերակի տողը ասում է, թե ինչ է մտադիր հաճախորդը, բայց մատակարարի կառուցվածքը կարող է տարբերվել upstream-ից, ուստի ստուգեք այն հաճախորդը, որն իրականում գործարկում եք՝ ssh -V։

Երկու արձանագրությունները անունները լուծում են տարբեր կերպ։ Հին SCP-ն խնդրում է հեռավոր օգտատիրոջ shell-ին ընդլայնել ուղին, ուստի նիշերի ձևանմուշները և tilde-ները այդ shell-ը մշակում է իր կանոններով։ SFTP-ն փոխարենը թողարկում է ֆայլերի փոխանցման գործողություններ, ուստի ձևանմուշը կամ ընդլայնում է հաճախորդը, կամ ընդհանրապես չի ընդլայնվում։ Երկուսն էլ SSH-ի ներսում գնում են նույն մեքենա, ինչի պատճառով մեկ հոսթը կարող է տարբեր կերպ վարվել երկու հաճախորդի ներքո։

scp -v տպում է իր պահանջած ենթահամակարգը, և sftp ենթահամակարգի տողը հաստատում է, որ օգտագործվում է ժամանակակից ուղին։ scp -O պարտադրում է հին արձանագրությունը այնտեղ, որտեղ այն աջակցվում և իսկապես պահանջվում է, և իր հետ վերադարձնում է իր չակերտների կանոնները։ Սա VPN տարբերակ չէ, սերվերի վրա ինչ-որ բան միացնելու միջոց չէ և հոսթի բանալու ստուգումը թուլացնելու պատճառ չէ։

Փորձարկեք ուղին նախքան սկրիպտը դրանից կախված կդառնա

Ուղու խնդիրն ի հայտ է գալիս ամենավատ պահին՝ գիշերային ավտոմատացված աշխատանքում, երբ ոչ ոք չի հետևում։ Նախ ապացուցեք նպատակակետը փոքր ֆայլով և ճիշտ այն հաշվով, որն օգտագործում է աշխատանքը, և պահեք այդ թեստային հրամանը աշխատանքի սահմանման կողքին։ Եթե թեստին այլ հաշիվ կամ այլ պանակ է պետք, աշխատանքին նույնպես պետք կլինի։

Ստուգեք նաև սերվերի կողմը։ grep -i subsystem /etc/ssh/sshd_config ցույց է տալիս՝ արդյոք SFTP ենթահամակարգը կարգավորված է, և sftp -b /dev/null [email protected] հաջողությամբ ավարտվում է միայն այն ժամանակ, երբ այդ ենթահամակարգը պատասխանում է։ Հոսթը, որն ընդունում է SSH մուտքեր, բայց ենթահամակարգ չունի, ձախողվում է յուրաքանչյուր ժամանակակից փոխանցման ժամանակ՝ մուտքի թեստում ամբողջովին առողջ երևալով։

Գրանցեք հաճախորդի տարբերակը, օգտագործվող արձանագրությունը և բացարձակ հեռավոր ուղին աշխատանքի նշումներում։ Երբ հաջորդ թարմացումը փոխի լռելյայն արժեք, այդ նշումը տարբերությունն է հինգ րոպեանոց ուղղման և ենթադրություններով լի կես օրվա միջև։

Առնչվող հոդվածներ