একটি 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 ব্যবহার করে, আর ডিস্ট্রিবিউশনগুলো নিজেদের সময়সূচিতে সেই আচরণ গ্রহণ বা ব্যাকপোর্ট করে। ভার্সন স্ট্রিং বলে ক্লায়েন্ট কী চায়, কিন্তু ভেন্ডর বিল্ড আপস্ট্রিম থেকে ভিন্ন হতে পারে, তাই আপনি যে ক্লায়েন্ট সত্যিই চালান তা পরীক্ষা করুন: 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 লগইন গ্রহণ করে কিন্তু সাবসিস্টেম নেই, সেটি প্রতিটি আধুনিক ট্রান্সফারে ব্যর্থ হয়, অথচ লগইন পরীক্ষায় পুরোপুরি সুস্থ দেখায়।

ক্লায়েন্ট ভার্সন, ব্যবহৃত প্রোটোকল এবং পরম রিমোট পাথ কাজের নোটে লিখে রাখুন। পরবর্তী আপগ্রেড যখন ডিফল্ট বদলাবে, সেই নোটটিই পাঁচ মিনিটের সমাধান আর এক বিকেলের অনুমানের মধ্যে পার্থক্য।

সম্পর্কিত নিবন্ধ