Каманда scp, якая гадамі працавала ў скрыпце, можа збавіцца на сучасным кліенце з памылкай шляху, якая не мае ніякага дачынення да тунеля. VPN перадаў байты; кліент папрасіў у сервера імя, якое сервер не змог развязаць. Сучасны OpenSSH scp па змаўчанні перадае праз SFTP, а SFTP не робіць раскрыцця ў стылі абалонкі, як рабіў стары пратакол. Разбор каманды ад вашага ўласнага ўліковага запісу паказвае, дзе шлях сапраўды інтэрпрэтуецца.

Пачніце з уліковага запісу, затым з каталога, у які ён можа пісаць

Двукроп'е раздзяляе дзве прасторы імёнаў, і толькі левы бок належыць машыне, на якой вы друкуеце. Усё пасля яго развязвае сервер, пад уліковым запісам, які вы аўтэнтыфікавалі, у межах таго прадстаўлення файлавай сістэмы, якое мае гэты запіс. Пацвердзіце абодва перад складаннем каманды, бо шлях, правільны для адміністратара, не аўтаматычна правільны для карыстальніка перадачы. Гэтая розніца — крыніца большасці памылак правоў, якія выглядаюць як збоі сеткі.

Спытайце сервер пра яго ўласнае прадстаўленне: 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 у скрыпце, які суправаджаецца. Раскрыццё хатняга каталога іншага запісу было функцыяй аддаленай абалонкі, і сервер SFTP можа не рэалізоўваць пашырэнне, якое яго імітуе. Запішыце абсалютны шлях, які запіс сапраўды можа адкрыць, і бярыце лакальныя шляхі з прабеламі ў лапкі замест капіявання слаёў лапак, напісаных для абалонкі на серверы.

Ведайце, які пратакол ваш scp сапраўды выкарыстоўвае

З OpenSSH 9.0 кліент па змаўчанні выкарыстоўвае SFTP, а дыстрыбутывы прымаюць ці пераносяць гэтыя паводзіны па сваім графіку. Радок версіі паведамляе, што мае намер кліент, але зборка пастаўшчыка можа адрознівацца ад upstream, таму праверце кліент, які вы сапраўды запускаеце: ssh -V.

Два пратаколы развязваюць імёны па-рознаму. Стары SCP просіць аддаленую абалонку карыстальніка раскрыць шлях, таму шаблоны і тыльды апрацоўвае гэтая абалонка па сваіх правілах. SFTP замест гэтага выдае аперацыі перадачы файлаў, таму шаблон альбо раскрываецца кліентам, альбо не раскрываецца зусім. Абодва ідуць унутры SSH да адной машыны, таму адзін хост можа паводзіць сябе па-рознаму пад двума кліентамі.

scp -v друкуе падсістэму, якую запытвае, а радок падсістэмы sftp пацвярджае, што сучасны шлях выкарыстоўваецца. scp -O прымушае стары пратакол там, дзе ён падтрымліваецца і сапраўды патрэбны, і вяртае з сабой уласныя правілы лапкавання. Гэта не опцыя VPN, не спосаб нешта ўключыць на серверы і не прычына паслабляць праверку ключа хоста.

Праверце шлях перад тым, як скрыпт на яго спадзецца

Праблема шляху ўсплывае ў самы нязручны час, у аўтаматызаванай задачы ноччу без наглядальніка. Спачатку дакажыце прызначэнне малым файлам і дакладным запісам, які выкарыстоўвае задача, і трымайце гэтую тэставую каманду побач з вызначэннем задачы. Калі тэсту патрэбны іншы запіс або іншы каталог, задачы таксама спатрэбіцца.

Праверце і бок сервера. grep -i subsystem /etc/ssh/sshd_config паказвае, ці наладжана падсістэма SFTP, а sftp -b /dev/null [email protected] завяршаецца паспяхова толькі тады, калі гэтая падсістэма адказвае. Хост, які прымае ўваходы SSH, але не мае падсістэмы, збаўляе кожную сучасную перадачу, выглядаючы цалкам здаровым у тэсце ўваходу.

Запішыце версію кліента, пратакол, які выкарыстоўваецца, і абсалютны аддалены шлях у нататках задачы. Калі наступнае абнаўленне зменіць змаўчанне, гэтая нататка — розніца паміж пяціхвілінным выпраўленнем і паўднём здагадак.

Падобныя артыкулы