লিনাক্স সার্ভারে বা থেকে ফাইল স্থানান্তর করার প্রয়োজন হলে বেশিরভাগ লোকেরা FileZilla, WinSCP বা অন্যান্য FTP প্রোগ্রামের মতো ইউটিলিটি পছন্দ করে। SFTP হল আসল FTP প্রোটোকলের একটি নিরাপদ বিকল্প। এটি বেশিরভাগই তার অসুরক্ষিত সংস্করণের মতো একই ফাংশন সম্পাদন করে, তবে এনক্রিপশনের একটি অতিরিক্ত স্তর সহ। এটি সম্পন্ন করতে, এটি SSH প্রোটোকল ব্যবহার করে যা এটিকে এনক্রিপশন ক্ষমতা প্রদান করে। আপনার লিনাক্স সিস্টেমে একটি SFTP সার্ভার সেট আপ করার জন্য একাধিক পদক্ষেপ জড়িত, যা আমরা এখানে প্রদর্শন করছি৷
SFTP কি?
SFTP (সিকিউর ফাইল ট্রান্সফার প্রোটোকল) হল একটি ক্লায়েন্ট থেকে সার্ভারে ফাইল স্থানান্তরের জন্য একটি নেটওয়ার্ক প্রোটোকল। FTP (ফাইল ট্রান্সফার প্রোটোকল) এর বিপরীতে, SFTP পাঠানো ডেটা এনক্রিপ্ট করতে SSH (সিকিউর শেল) প্রোটোকল ব্যবহার করে। এটি কম্পিউটার বিজ্ঞানী, তাতু ইলোনেন এবং সামি লেহটিনেন দ্বারা তৈরি করা হয়েছিল, যারা 1990 এর দশকে এসএসএইচ প্রোটোকলের বিকাশের জন্যও দায়ী। যাইহোক, আধুনিক সংস্করণটি IETF (ইন্টারনেট ইঞ্জিনিয়ারিং টাস্ক ফোর্স) দ্বারা তৈরি করা হয়েছে।
এটিকে একটি দূরবর্তী ফাইল সিস্টেম প্রোটোকল হিসাবে বর্ণনা করা যেতে পারে, যদিও এটির নাম প্রস্তাব করে যে এটি শুধুমাত্র ফাইল স্থানান্তর ক্রিয়াকলাপ সম্পাদন করে। ক্লায়েন্ট থেকে রিসিভিং সার্ভারে SFTP ব্যবহার করে একটি ফাইল পাঠানোর সময়, ডেটা গন্তব্যে পাঠানোর আগে এনক্রিপ্ট করা হয়। পাঠানো ডেটা যদি "মানুষ-মধ্যম" দ্বারা আটকানো হয়, তবে এই তৃতীয় পক্ষের দ্বারা এটি সহজে ডিক্রিপ্ট করা যাবে না৷
SSH এবং OpenSSH সার্ভার ইনস্টল করা হচ্ছে
আমরা SSH এবং OpenSSH সার্ভার ইনস্টল করে SFTP সার্ভার সেট আপ করার প্রক্রিয়া শুরু করছি৷
বেশিরভাগ লিনাক্স ইনস্টলেশনে ইতিমধ্যেই ডিফল্টভাবে SSH ইনস্টল করা আছে, কিন্তু আপনার সিস্টেমে এটি না থাকলে, আপনি অ্যাডভান্সড প্যাকেজিং টুলের apt
ব্যবহার করে এটি ইনস্টল করতে পারেন। কমান্ড:
sudo apt install ssh
SSH ইনস্টল করার পরে, আপনি ssh
চালিয়ে এর সংস্করণটি পরীক্ষা করতে পারেন -V
দিয়ে কমান্ড পতাকা:
ssh -V
আপনি ডেবিয়ান এবং উবুন্টু সিস্টেমে OpenSSH সার্ভার ইনস্টল করতে পারেন, উদাহরণস্বরূপ, apt
ব্যবহার করে কমান্ড:
sudo apt install openssh-server
আপনি pacman
ব্যবহার করে আর্চ লিনাক্সে একই কাজ করতে পারেন কমান্ড:
sudo pacman -S openssh
SFTP-এর জন্য ব্যবহারকারী, গোষ্ঠী এবং ডিরেক্টরি তৈরি করা
এটি একটি সাধারণ সুপারিশ যে লিনাক্সে বিভিন্ন পরিষেবা তাদের নিজস্ব ব্যবহারকারী, গোষ্ঠী এবং ডিরেক্টরি ব্যবহার করা উচিত।
SFTP ব্যবহারকারীদের জন্য একটি গ্রুপ তৈরি করে শুরু করুন। এটি groupadd
ব্যবহার করে সম্পন্ন করা হয় কমান্ড:
sudo groupadd sftp_group
আপনি একজন ব্যবহারকারী তৈরি করতে পারেন এবং useradd
ব্যবহার করে তৈরি করা গ্রুপে যোগ করতে পারেন কমান্ড এবং এর -g
পতাকা, যা ব্যবহারকারী যে গোষ্ঠীর একটি অংশ হবে তা নির্দিষ্ট করতে ব্যবহৃত হয়:
sudo useradd -g sftp_group sftp_user
ব্যবহারকারী তৈরি করার পরে, passwd
ব্যবহার করে এটিকে একটি পাসওয়ার্ড বরাদ্দ করুন কমান্ড:
sudo passwd sftp_user
নতুন তৈরি ব্যবহারকারীর জন্য ডিফল্ট ডিরেক্টরি তৈরি করুন:
sudo mkdir -p /data/sftp_user/uploaded_files
chown
ব্যবহার করুন নির্দেশিকাকে প্রয়োজনীয় অনুমতি দেওয়ার নির্দেশ:
sudo chown -R root:sftp_group /data/sftp_user sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_files
SSH সার্ভার কনফিগার করা হচ্ছে
একটি SFTP সার্ভার সেট আপ করার পরবর্তী ধাপ হল SSH সার্ভারটি কনফিগার করা যা এটি ব্যবহার করবে।
"/etc/ssh/" এ পাওয়া "sshd_config" ফাইলটি সম্পাদনা করুন যাতে ব্যবহারকারী SSH-এর শেলের পরিবর্তে সার্ভারের সাথে সংযোগ করার সময় SFTP শেল ব্যবহার করে৷
ডিফল্টরূপে অনেক লিনাক্স ইনস্টলেশনে পাওয়া সাধারণভাবে ব্যবহৃত ন্যানো সম্পাদক ব্যবহার করে আপনি সহজেই ফাইলটি সম্পাদনা করতে পারেন:
sudo nano /etc/ssh/sshd_config
ফাইলের নীচে খুঁজুন এবং নিম্নলিখিত যোগ করুন:
Match Group sftp_group ChrootDirectory /data/%u ForceCommand internal-sftp
SSH পরিষেবা পুনরায় চালু করুন:
sudo systemtl restart sshd
(ঐচ্ছিক) SFTP পোর্ট পরিবর্তন করা
আপনি যদি SFTP সার্ভারটি 22 এর ডিফল্ট মান থেকে আপনার নির্বাচিত বিকল্পে যে পোর্টটি ব্যবহার করছে তা পরিবর্তন করতে চাইলে, আপনাকে আবার "sshd_config" ফাইলটি সম্পাদনা করতে হবে৷
আবার ন্যানো এডিটর ব্যবহার করে ফাইলটি সম্পাদনা করুন:
sudo nano /etc/ssh/sshd_config
ফাইলে একটি লাইন খুঁজুন যার ডিফল্ট পোর্ট মান 22 মন্তব্য করা হয়েছে:
#Port 22
আপনি লাইনটি মন্তব্য করতে এবং আপনার পছন্দের পোর্ট মান যোগ করতে ব্যবহৃত হ্যাশ (#) চিহ্নটি সরাতে পারেন। আমার ক্ষেত্রে, আমি মান পরিবর্তন করছি 1111:
Port 1111
এখন কেবল ফাইলটি সংরক্ষণ করুন
এবং সার্ভার পুনরায় চালু করুন:
sudo systemctl restart sshd
লগ ইন করা এবং সার্ভার ব্যবহার করা
সার্ভারটি ইনস্টল এবং কনফিগার করা হয়েছে, এটি ব্যবহারের জন্য প্রস্তুত। আপনি সহজেই ফাইলগুলি আপলোড করতে এবং ডাউনলোড করতে পারেন, সবই SSH দ্বারা প্রদত্ত একটি এনক্রিপ্ট করা সেশন সহ৷
লগ ইন করার আগে, প্রদত্ত ম্যানুয়ালটি একবার দেখে নিতে ক্ষতি হবে না:
sftp -h
নিম্নলিখিত বিন্যাসে ব্যবহারকারীর নাম এবং সার্ভার আইপি বা হোস্টনাম প্রদান করে সার্ভারে লগ ইন করুন:
sftp USER@HOST
অতিরিক্তভাবে, আপনি -P
ব্যবহার করে আপনার SFTP সার্ভারটি যে পোর্ট ব্যবহার করছে তা নির্দিষ্ট করতে পারেন (ডিফল্ট 22) পতাকা:
sftp USER@HOST -P <PORT>
আপনি যখন লগ ইন করেন, আপনাকে একটি SFTP শেল দিয়ে স্বাগত জানানো হয়।
help
লিখে একটি ম্যানুয়াল দেখুন .
ফাইল ডাউনলোড করা হচ্ছে
একটি ফাইল ডাউনলোড করতে:
get /path/to/file/on/server
উদাহরণ:
get /bin/ls
এটি আপনার বর্তমান ডিরেক্টরিতে ডাউনলোড করবে - আপনি সার্ভারে লগ ইন করার আগে স্থানীয়ভাবে যেটিতে ছিলেন। একটি নির্দিষ্ট স্থানীয় ডিরেক্টরিতে ডাউনলোড করতে:
get /path/to/file/on/server /path/to/local/folder
ডিরেক্টরি অনুলিপি করতে, আপনাকে -r
যোগ করতে হবে প্যারামিটার, যা কমান্ডের জন্য রিকার্সিভ বোঝায়।
get -r /bin /home/username/Desktop/bin
এই ক্ষেত্রে “/home/username/Desktop/bin”-এর মতো আপনি স্থানীয়ভাবে যে নতুন ডিরেক্টরি তৈরি করতে চান তার জন্য একটি নাম যোগ করতে ভুলবেন না। আপনি যদি get -r /bin /home/username/Desktop
ব্যবহার করেন , ফাইলগুলি সরাসরি ডেস্কটপে কপি করা হবে। মনে রাখবেন যে এটি সেই ফাইলগুলি যা কপি করা হয়েছে এবং নিজেই ডিরেক্টরি নয়৷
ফাইল আপলোড করা হচ্ছে
ফাইল বা ডিরেক্টরি আপলোড করা একই নীতি অনুসরণ করে। একমাত্র ব্যতিক্রম হল পাথগুলি বিপরীত করা হয়, যার অর্থ আপনি প্রথমে স্থানীয় ফাইল/ডিরেক্টরি, তারপর দূরবর্তী পথটি নির্দিষ্ট করুন৷
শুরু করতে, put
ব্যবহার করে সার্ভারে ফাইল আপলোড করুন কমান্ড:
put /path/to/local/content /path/to/remote/location
ডিরেক্টরি আপলোড করার সময় (পুনরাবৃত্ত), মনে রাখবেন যে পূর্ববর্তী বিভাগ থেকে একই নিয়ম প্রযোজ্য:এটি আসলে ডিরেক্টরির ফাইলগুলি কপি করা হয় এবং ডিরেক্টরিটি নিজেই নয়। আপনি সেই ফাইলগুলি কপি করতে চান এমন একটি ডিরেক্টরির জন্য একটি নতুন নাম নির্দিষ্ট করুন৷
৷put -r /home/username/Desktop/bin bin
এটি দূরবর্তী দিকে "বিন" নামে একটি নতুন ডিরেক্টরি তৈরি করে।
স্থানান্তর পুনরায় শুরু করুন এবং স্পেস ধারণ করে এমন পথ ব্যবহার করুন
যখন আপনি একটি বড় ফাইল স্থানান্তর করেন যা বাধাগ্রস্ত হয়, আপনি পূর্ববর্তী কমান্ডটি reput
দিয়ে প্রতিস্থাপন করে পুনরায় শুরু করতে পারেন এবং reget
. শুধু নিশ্চিত করুন যে আপনি গতবার ব্যবহার করা একই পথ ব্যবহার করেছেন যাতে উৎস এবং গন্তব্য ঠিক মেলে।
reget /path/to/file/on/server /path/to/local/file reput /path/to/local/file /path/to/file/on/server
ডিরেক্টরি স্থানান্তর পুনরায় শুরু করতে, শুধু -r
যোগ করুন প্যারামিটার:
reput -r /home/username/Desktop/bin bin
যদি একটি ফাইলের পাথে স্পেস থাকে, তাহলে সেটিকে উদ্ধৃতির মধ্যে রাখুন:
put "/home/username/My Documents/Files"
অন্যান্য ব্যবহার
আপনি ls
ব্যবহার করে ফাইল এবং ডিরেক্টরি তালিকাভুক্ত করতে পারেন কমান্ড:
ls -l
chmod
ব্যবহার করে ফাইলগুলির অনুমতিগুলিও পরিবর্তনযোগ্য কমান্ড:
chmod <PERMISSION> <FILE>
অতিরিক্তভাবে, আপনি mkdir কমান্ড ব্যবহার করে একটি নতুন ডিরেক্টরি তৈরি করতে পারেন:
mkdir <DIRECTORY_NAME>
প্রায়শই জিজ্ঞাসিত প্রশ্ন
1. আমার কি একটি SFTP ক্লায়েন্ট ইনস্টল করতে হবে?
বেশিরভাগ ক্ষেত্রেই না, যেহেতু বেশিরভাগ লিনাক্স সিস্টেম ডিফল্টভাবে ইনস্টল করা টার্মিনাল-ভিত্তিক SFTP ক্লায়েন্টের সাথে আসে।
2. আমি কি সর্বজনীন-কী প্রমাণীকরণ ব্যবহার করতে পারি?
হ্যাঁ, আপনি একটি প্রমাণীকরণ পদ্ধতি হিসাবে পাসওয়ার্ডের পরিবর্তে সর্বজনীন-কী প্রমাণীকরণ ব্যবহার করতে পারেন। এটি সেট আপ করা মোটামুটি সহজ, এবং এটি আপনার সার্ভারের জন্য অতিরিক্ত নিরাপত্তা প্রদান করে৷
৷3. আমি কি একই সাথে একটি SSH সার্ভার হোস্ট করতে পারি?
হ্যাঁ. যাইহোক, আপনাকে নিশ্চিত করতে হবে যে আপনার SFTP সার্ভার SSH সার্ভারের মতো একই পোর্ট ব্যবহার করছে না।