কিভাবে উবুন্টুতে একটি সীমিত এসএফটিপি সার্ভার সেটআপ করবেন?


81

আমি জানতে চাই যে কীভাবে root, sudo, sftp- ব্যবহারকারীর অ্যাকাউন্টগুলি সেট আপ করতে হয় যা লগ ইন করার সময়ে পাবলিক কী প্রমাণীকরণের প্রয়োজন হবে না I আমি কীভাবে কেবল sftp- র ব্যবহারকারীর হোম ডিরেক্টরিগুলি সেটআপ করবেন সেগুলিও জানতে চাই উচ্চ স্তরের অন্যান্য ডিরেক্টরি অ্যাক্সেস করতে পারে না।

উত্তর:


91

উবুন্টু ব্যবহার করে একটি হোস্ট মেশিনে একটি ssh পরিষেবা স্থাপন করতে আপনাকে সহায়তা করার সেরা উত্স হ'ল ওপেনএসএইচ সার্ভার । এটি আপনাকে ক্লায়েন্ট মেশিন থেকে এসএসএইচে ফাইল অ্যাক্সেস, ট্রান্সফার এবং পরিচালনা করতে এসএসএইচ ফাইল স্থানান্তর প্রোটোকল (এছাড়াও সিকিওর ফাইল ট্রান্সফার প্রোটোকল, বা এসএফটিপি) ব্যবহার করার অনুমতি দেবে।

সমাধান ওভারভিউ

  • উবুন্টুতে আপনি OpenSSH serverএকটি হোস্ট মেশিনে একটি সেটআপ করতে পারেন এবং এর পরে ব্যবহারকারী sshকেবলমাত্র একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে ক্লায়েন্ট থেকে হোস্টের সার্ভারে সংযোগ করতে পারেন । দ্রষ্টব্য, তবে, সর্বজনীন কী প্রমাণীকরণের সুপারিশ করা হয়,

" এসএসএইচ সার্ভার ইনস্টল করার আগে আপনার কাছে শক্ত পাসওয়ার্ড রয়েছে তা নিশ্চিত করুন (আপনি পাসওয়ার্ডগুলি পুরোপুরি অক্ষম করতে চাইতে পারেন )"

  • হোস্টে তৈরি প্রশাসনিক ব্যবহারকারীর অ্যাকাউন্টগুলিতে সুডোর সুবিধাগুলি থাকবে, হোস্টে তৈরি স্ট্যান্ডার্ড ব্যবহারকারী অ্যাকাউন্টগুলি তা করবে না।

হোস্টে আপনার ওপেনএসএসএইচ সার্ভারটি ইনস্টল এবং কনফিগার করুন

হোস্টে একটি ওপেনএসএইচ সার্ভার ইনস্টল করতে:

sudo apt-get install openssh-server

আপনার হোস্টকে একটি স্ট্যাটিক আইপি ঠিকানা দিন যাতে আপনি এটির সাথে নির্ভরযোগ্যভাবে সংযোগ করতে পারেন:

nm-connection-editor

আপনার ওপেনএসএইচ সার্ভারটি কনফিগার করতে , "প্রথমে আপনার sshd_config ফাইলটিকে আপনার হোম ডিরেক্টরিতে অনুলিপি করে বা / etc / ssh-এ কেবল পঠনযোগ্য অনুলিপি তৈরি করে ব্যাকআপ করুন:"

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

"একবার আপনি নিজের sshd_configফাইলটি ব্যাক আপ করে নিলে আপনি যে কোনও পাঠ্য সম্পাদক দিয়ে পরিবর্তন করতে পারেন, উদাহরণস্বরূপ:"

sudo -H gedit /etc/ssh/sshd_config

এই পরিবর্তনগুলি কার্যকর করতে আপনাকে হোস্টে আপনার ssh পরিষেবাটি পুনরায় চালু করতে হবে

sudo service ssh restart

নিম্নলিখিত সুরক্ষা ব্যবস্থা বিবেচনা করুন

  • আপনার রাউটারে পোর্ট-ফরওয়ার্ডিং সক্ষম করবেন না: যখন বাইরের লোক আপনার রাউটারকে বহিরাগতকে পোর্ট 22 ইত্যাদির সাথে সংযুক্ত করতে বলে, আপনি যদি পোর্ট-ফরওয়ার্ডিং সক্ষম না করেন তবে আপনার রাউটার মেনে চলতে ব্যর্থ হয় unless
  • রুট লগইন অক্ষম করুন: মন্তব্য করুন PermitRootLogin without-password; PermitRootLogin noহোস্ট এর যোগ করুন/etc/ssh/sshd_config
  • অ-মানক এসএসএইচ পোর্ট চয়ন করুন: মন্তব্য করুন Port 22; Port <new-port-number>হোস্ট এর যোগ করুন/etc/ssh/sshd_config
  • কেবল স্থানীয় সংযোগের অনুমতি দিন: যুক্ত করুন ListenAddress 192.168.0.10
  • নির্দিষ্ট পোর্টে নির্দিষ্ট ব্যবহারকারীদের মঞ্জুরি দিন: হোস্টের যোগ করুন AllowUsers <username>@<IP_address_1> <username>@<IP_address_2>বা এতে যোগ করুনAllowUsers <username>@111.222.333.*/etc/ssh/sshd_config
  • কেবলমাত্র আরএসএ কী (পাসওয়ার্ডবিহীন) সংযোগগুলিকে মঞ্জুরি দিন: ~/.ssh/id_rsa.pubপ্রতিটি ক্লায়েন্টের সামগ্রীগুলি হোস্টের একটি নতুন লাইন হিসাবে যুক্ত করুন ~/.ssh/authorized_keys। তারপরে PasswordAuthentication noহোস্টের সাথে যুক্ত করুন/etc/ssh/sshd_config
  • ধীরে ধীরে আক্রমণকারীদের ক্র্যাকিংয়ের প্রচেষ্টা: ইনকামিং সংযোগগুলি 10 / মিনিটে সীমাবদ্ধ করতে হোস্টে ufw (জটিল ফায়ারওয়াল) ব্যবহার করুন: sudo apt-get install ufw && sudo ufw limit OpenSSH
  • আরও ধারণার জন্য, এসএসএইচ অ্যাক্সেস সুরক্ষিত রাখা দেখুন

আপনার যদি মনে হয় তবে অবশ্যই PasswordAuthenticationআপনার sshd_configফাইলটি সক্ষম করুন

বাক্যাংশটি দিয়ে রেখাটি সন্ধান করুন PasswordAuthenticationএবং এটি পড়ুন:

PasswordAuthentication yes

আপনার নতুন sshd_configফাইলটি সংরক্ষণ করুন এবং তারপরে হোস্টের sshপরিষেবাটি পুনরায় চালু করুন :

sudo service ssh restart

আপনার যদি ইন্টারনেটের যে কোনও জায়গা থেকে অ্যাক্সেসের প্রয়োজন হয় তবে আপনার ওপেনএসএইচ সার্ভারে ট্র্যাফিকের জন্য আপনার স্থানীয় রাউটারে পোর্ট ফরওয়ার্ডিং সেটআপ করুন

নোট করুন পোর্ট হোস্টের sshপরিষেবাটি sshd_configফাইলে শুনছে এবং আপনার ওপেনএসএইচ সার্ভারের আইপি ঠিকানায় এই পোর্টটি লক্ষ্য করে টিসিপি / ইউডিপি ট্র্যাফিক ফরওয়ার্ড করতে আপনার রাউটার সেটআপ করবে।

হোস্টের সাথে সংযুক্ত হয়ে কমান্ড-লাইন বা টার্মিনালের মাধ্যমে লগইন করুন

  • <username>হোস্ট হিসাবে একটি এসএফটিপি শেল টার্মিনাল খুলতে, ক্লায়েন্টে একটি টার্মিনাল খুলুন এবং 123.123.1.23হোস্টের আইপি ঠিকানার পরিবর্তে নিম্নলিখিত কমান্ডটি প্রবেশ করুন :

    sftp <username>@123.123.1.23
    
    • আপনি যদি পোর্ট নম্বরটি হোস্টের ওপেনএসএসএইচ সার্ভার শোনেন তবে এটি করুন:

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • <username>হোস্ট হিসাবে একটি এসএসএইচ শেল টার্মিনাল খুলতে, ক্লায়েন্টে একটি টার্মিনাল খুলুন এবং 123.123.1.23হোস্টের আইপি ঠিকানার পরিবর্তে নিম্নলিখিত কমান্ডটি প্রবেশ করুন :

    ssh <username>@123.123.1.23
    
    • আপনি যদি পোর্ট নম্বরটি হোস্টের ওপেনএসএসএইচ সার্ভার শোনেন তবে এটি করুন:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

হোস্টের সাথে সংযোগ করুন এবং ফাইল স্থানান্তর সক্ষম করার জন্য আরও ভিজ্যুয়াল এসএফটিপি অ্যাক্সেসের জন্য জিইউআই ফাইল ম্যানেজারের মাধ্যমে লগইন করুন (যেমন, নটিলাস)

  1. ক্লায়েন্টে নটিলাস খুলুন
  2. ফাইল> সার্ভারে সংযুক্ত করুন নির্বাচন করুন
  3. ধরন: SSH
  4. সার্ভার: হোস্টের আইপি ঠিকানা লিখুন
  5. পোর্ট: হোস্টের sshd_configফাইলে নির্দিষ্ট পোর্ট নম্বর
  6. ব্যবহারকারীর নাম: ব্যবহারকারীর নাম
  7. পাসওয়ার্ড: পাসওয়ার্ড

এখানে চিত্র বর্ণনা লিখুন

14.04 এ:

  1. ক্লায়েন্টে নটিলাস খুলুন
  2. সার্ভারের সাথে সংযুক্ত করুন
  3. প্রকার: sh এসএসএস @ 123.123.1.23:

তাদের বাড়ির ফোল্ডারের বাইরে সীমিত ফাইল অনুমতি নিয়ে হোস্টে স্ট্যান্ডার্ড ব্যবহারকারী অ্যাকাউন্ট তৈরি করুন

হোস্টের স্থানে যথাযথ ফাইল অনুমতিগুলি গ্যারান্টি দেয় যে আপনি হোস্টে তৈরি প্রতিটি মানক ব্যবহারকারী (সুডো সুবিধাগুলি ছাড়াই) তাদের /home/new_userডিরেক্টরি মালিকানাধীন থাকবে তবে বাকী ডিরেক্টরি কাঠামোর সাথে সীমিত অনুমতি থাকবে have

  • সীমিত অনুমতিগুলির অর্থ অগত্যা তারা ফাইল নাম এবং ডিরেক্টরি কাঠামো দেখতে অক্ষম।

আশা করি এটি সহায়ক!


9
আমার কাছে এই উত্তরটি মনে হয়েছে, যদিও খুব বিস্তৃতভাবে উপস্থিত হয়ে ওপিএস প্রশ্নের সবচেয়ে কঠিন অংশটির উত্তর দিতে ব্যর্থ হয়েছে: "যেখানে তারা উচ্চ স্তরের অন্যান্য ডিরেক্টরিতে অ্যাক্সেস করতে পারবেন না।" উপরের হিসাবে প্রয়োগ করা হলে ব্যবহারকারী ডিরেক্টরি কাঠামোর বিশাল সংখ্যাটি পড়তে সক্ষম হন।
ostergaard

2
@ অজস্টারগার্ডের মন্তব্যে প্রসারিত করতে, এটি নিয়মিত ইউনিক্স ব্যবহারকারী তৈরি করে এবং তাদের এসএসএইচ এবং এসএফটিপি অ্যাক্সেসের অনুমতি দেয়। একটি নিয়মিত ইউনিক্স ব্যবহারকারী (মূল নয়) এখনও ওয়েব সার্ভার কনফিগারেশন এবং আরও অনেক কিছু সংবেদনশীল ফাইলগুলি অ্যাক্সেস করতে এবং দেখতে পারবেন। এটি অবশ্যই নিরাপদ নয় এবং অবশ্যই ওপি কর্তৃক প্রদত্ত সীমাবদ্ধতাটি পূরণ করবে না।
সাইমন উডসাইড

50

পদক্ষেপ 1: ইনস্টল না থাকলে ওপেনএসএইচ প্যাকেজ ইনস্টল করুন

sudo apt-get install openssh-server

পদক্ষেপ 2: এসএফটিপি ব্যবহারকারীদের জন্য পৃথক গোষ্ঠী তৈরি করুন।

sudo addgroup ftpaccess

পদক্ষেপ 3: /etc/ssh/sshd_configফাইল সম্পাদনা করুন এবং নীচের মত পরিবর্তন করুন। লাইনের নীচে খুঁজুন এবং মন্তব্য করুন।

#Subsystem sftp /usr/lib/openssh/sftp-server

এবং ফাইলের শেষে এই লাইনগুলি যুক্ত করুন।

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

পদক্ষেপ 4: sshd পরিষেবা পুনরায় চালু করুন।

sudo service ssh restart

পদক্ষেপ 5: এফটিপ্যাক্সেস গ্রুপ সহ ব্যবহারকারী যুক্ত করুন এবং পাসওয়ার্ড তৈরি করুন।

sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin

পদক্ষেপ:: হোম ডিরেক্টরি অনুমতিটি সংশোধন করুন।

sudo chown root:root /home/paul

পদক্ষেপ 7: আপলোডের জন্য বাড়ির ভিতরে একটি ডিরেক্টরি তৈরি করুন এবং গোষ্ঠীর সাথে অনুমতিটি সংশোধন করুন।

sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www

এটাই .

দেখুন: উবুন্টুতে এসএফটিপি সেটআপ করুন


এটি সঠিক উত্তর বলে মনে হচ্ছে। আমি এটি পরীক্ষা করিনি, তবে কমপক্ষে এটি মূল অসুবিধার উল্লেখ করেছে, ব্রাউজিং পথকে সীমাবদ্ধ করে।
মোহাম্মদ নুরাল্ডিন

আমি এটি পরীক্ষা করেছি এবং এটি অনেকটা জায়েজ ছিল, হোম ফোল্ডারে 755 হওয়ার কারণে ডিফল্ট অনুমতি ছিল I আমি sudo chmod 711হোম ফোল্ডারে করেছি এবং এটি আমাকে কেবল www ফোল্ডারে এফটিপি করার অনুমতি দিয়েছে। এখনও অবধি ভাল মনে হচ্ছে তবে অন্যরাও এতে
চিমিয়ে ফেলতে পারে

0

"জেডিডি" দ্বারা উল্লিখিতগুলি ছাড়াও ডিএনহোস্টগুলি হ'ল একটি সরঞ্জাম যা আপনি দেখতে চাইতে পারেন। এটি স্বয়ংক্রিয়ভাবে আপনার এসএসএইচ সার্ভারে পুনরাবৃত্তি সংযোগের প্রচেষ্টা অবরুদ্ধ করতে পারে। এটি উবুন্টু সংগ্রহস্থলে ইনস্টল করার জন্য উপলব্ধ।


পেকেট অস্বীকারকারীগুলি কেবল লুসিড (10.04LTS) এবং সুনির্দিষ্ট (12.04LTS) এর জন্য উপলব্ধ। packages.ubuntu.com/search?suite=all&keywords=denyhosts
এবি

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

0

ব্যবহারকারীর অ্যাক্সেস সীমাবদ্ধ করুন

এখানে, আমরা কেবলমাত্র ব্যবহারকারীকে ফাইল স্থানান্তর সম্পাদন করার অনুমতি দেব এবং আমরা টার্মিনাল অ্যাক্সেস অক্ষম করব।

তার জন্য কনফিগারেশন ফাইলের নীচে নিম্নলিখিত কোডগুলি যুক্ত করুন।

$ sudo nano /etc/ssh/sshd_config

এখন ফাইলটি কোডটি খুলবে এবং পেস্ট করবে।

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

filemgআপনার ব্যবহারকারীর নাম দিয়ে প্রতিস্থাপন করুন । তারপরে ফাইলটি সেভ এবং বন্ধ করুন।

এটাই.

তথ্যসূত্র: উবুন্টু 16.04 এ কীভাবে এসএফটিপি ব্যবহার করবেন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.