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 لاگ ان قبول کرتا ہے مگر ذیلی نظام نہیں رکھتا، ہر جدید منتقلی میں ناکام ہوتا ہے، حالانکہ لاگ ان آزمائش میں بالکل صحت مند دکھتا ہے۔
کلائنٹ کا ورژن، زیر استعمال پروٹوکول اور مطلق ریموٹ راستہ نوکری کے نوٹس میں درج کریں۔ جب اگلی اپ گریڈ کوئی طے شدہ قدر بدلے گی، وہی نوٹ پانچ منٹ کی درستی اور اندازوں سے بھری سہ پہر کے درمیان فرق ہے۔