SFTP-ээр дамжуулах scp: үнэхээр шийдэгддэг алсын замуудыг бичих
Орчин үеийн scp нь SFTP-ээр дамжуулдаг тул тильд өргөтгөл болон орлуулагч тэмдэгтүүд өөрөөр ажилладаг. Серверийн замыг тодорхой бичиж, протоколыг зориуд сонгоорой.
Олон жил скриптэд ажилласан 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 нэвтрэлтийг хүлээн авдаг ч дэд системгүй хост нэвтрэлтийн туршилтад бүрэн эрүүл харагдах боловч орчин үеийн бүх дамжуулалтад бүтэлгүй болдог.
Клиентийн хувилбар, ашиглагдаж буй протокол, үнэмлэхүй алсын замыг ажлын тэмдэглэлд бич. Дараагийн шинэчлэл анхдагч утгыг өөрчлөхөд тэр тэмдэглэл нь таван минутын засвар ба таамаглалаар дүүрэн үдээс хойш хоёрын ялгаа юм.