এসএসএইচ শেল অ্যাক্সেস সক্ষম করুন তবে এসএফটিপি অ্যাক্সেস অক্ষম করুন


21

আমি এই প্রশ্নের একটি ব্যবহারিক উত্তর খুঁজে পেয়েছি, এবং বেশিরভাগ উত্তরে কেন এটি করবেন না সে সম্পর্কে পরামর্শ অন্তর্ভুক্ত রয়েছে। তবে, এখানে দৃশ্যধারণ করা হয়েছে এবং এটি কী প্রয়োজনীয় করে তোলে:

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

এখন এখানে সমস্যাটি রয়েছে: আমি যদি ব্যবহারকারীদের এসএসএইচ অ্যাক্সেস দিই তবে তারা এসএফটিপি ক্লায়েন্ট ব্যবহার করে লগ ইন করতে সক্ষম হবে, যা অ্যাপ্লিকেশনটির জন্য ডেটা ডিরেক্টরিতে তাদের সরাসরি অ্যাক্সেস দেবে, যা খুব অনাকাঙ্ক্ষিত, যেহেতু এটিও দেবে তাদের যে ডেটা ডিরেক্টরিগুলিতে অ্যাক্সেস না করা উচিত তাদের অ্যাক্সেস।

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


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

3
অতিরিক্ত হিসাবে আপনি আপনার ব্যবহারকারীদের "ক্রুটিং" বিবেচনা করতে চাইতে পারেন। এবং অতিরিক্ত ডেটা অ্যাক্সেসের জন্য, এটি কোনও ডিজাইনের সমস্যার মতো দেখাচ্ছে
ডেনিস নল্টে

2
.profileএটির জন্য ব্যবহার করা ভুল সমাধানের মতো শোনাচ্ছে। আমি বিশ্বাস করি একটি বিকল্প শেল দিয়ে ব্যবহারকারীকে স্থাপন করা আরও অনেক অর্থবোধ তৈরি করে।
ক্যাস্পারড

3
.profileঅ্যাক্সেসকে সীমাবদ্ধ করতে ট্রিকটি ব্যবহার করার চেষ্টা করবেন না , কারণ এটি বাইপাসের চেয়ে তুচ্ছ। (বিস্তারিত জানার জন্য আমার উত্তর দেখুন)
আলেকসি তোড়হামো

উত্তর:


22

সম্পাদনা:

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

আমরা এখন মূল উত্তরটি অবিরত করছি:


Sshd_config এ sftp সমর্থন মন্তব্য করুন (এবং অবশ্যই পুনরায় আরম্ভ করুন sshd):

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


1
কখনও কখনও লাইন হতে পারেSubsystem sftp internal-sftp
কনডিবাস

1
আমার কাছে Subsystem sftp /usr/libexec/sftp-server কিন্তু কৌতুকটি আছে আপনাকে অনেক ধন্যবাদ
সোমাইসপ্যাঙ্ক

16
এটি প্রশংসনীয় শোনাচ্ছে না। আপনি যদি সার্ভারে স্বেচ্ছাসেবক আদেশগুলি কার্যকর করতে পারেন তবে আপনি এসএফটিপি সার্ভার-সাইড প্রোগ্রামটি কার্যকর করতে পারেন। এটি ইনস্টল না করা সত্ত্বেও আপনি এটি দীর্ঘ শেল কমান্ড হিসাবে পুনরায় প্রয়োগ করতে পারবেন এবং sftp ক্লায়েন্টকে sftp এর পরিবর্তে এই আদেশটি প্রেরণ করতে পারবেন। এই পদ্ধতিটি এসএফটিপি ব্যবহার করা কম সুবিধাজনক করে তুলতে পারে তবে যে কোনও ব্যবহারকারী যথেচ্ছ কমান্ডগুলি ফাইল হস্তান্তর করতে সেই আদেশগুলি ব্যবহার করে চালাতে পারেন তার কোনও উপায় নেই।
আর ..

1
পছন্দ করেছেন ব্যবহারকারীরা যে কোনও কমান্ড ব্যবহার করেই চালাতে পারেন ssh user@host command, যেহেতু .profileআপনি এটি করেন তবে তা চালানো হবে না, এবং এইভাবে আপনার অ্যাপ্লিকেশনটি একেবারেই শুরু হবে না। তারা সহজ কথা বলে সম্পূর্ণ শেল অ্যাক্সেস পেতে পারে ssh -t user@host bash। এটি চেষ্টা করুন এবং আপনি দেখতে পাবেন। সাবসিস্টেমটি একটি কমান্ড ওরফে; যদি তারা এর আগে এসএফটিপি ব্যবহার করতে পারত তবে তারা এটি এখনও ব্যবহার করতে পারে - এবং তারা চাইলে অন্য কোনও আদেশ। নীচে আমার উত্তর পড়ুন।
আলেক্সি তোড়হামো

1
@ সোসাইসাপঙ্ক: না, মুল বক্তব্যটি হ'ল আপনি এটি এসএস-এর মাধ্যমে করতে পারেন, তবে .profileএটি সুরক্ষার জন্য নয় এবং সহজেই বাইপাস করা যায় না। আমার উত্তরে, আমি এসএসএস দিয়ে এটি করার বিভিন্ন তিনটি পদ্ধতি তালিকাভুক্ত করেছি। সংক্ষেপে বলতে গেলে, শুধু থেকে আপনার অ্যাপের আবাহন সরাতে .profileএকটি শেল স্ক্রিপ্ট থেকে এবং হয় 1) ব্যবহারকারীর শেল 2 যেমন শেল স্ক্রিপ্ট সেট) যেমন শেল স্ক্রিপ্ট (সঠিকভাবে মিলেছে) সেট ForceCommandমধ্যে sshd_configপ্রকাশ্য-কি প্রমাণীকরণের সাথে 3) সুইচ এবং সেট যেমন শেল স্ক্রিপ্ট command-এ .ssh/authorized_keys। (এছাড়াও, আপনার @ নাম ব্যবহার করা উচিত যাতে লোকেরা মন্তব্য সম্পর্কে অবহিত হন)
আলেক্সি তোড়হমো

28

অন্যরা যেমন উল্লেখ করেছে, অক্ষম sftpকরা কোথাও পর্যাপ্ত কাছাকাছি নয় - অনিয়ন্ত্রিত sshঅ্যাক্সেসযুক্ত ব্যবহারকারী তাদের অ্যাকাউন্টে যে কোনও ফাইল দেখার অনুমতি পাচ্ছে, তাদের সংশোধন করার অনুমতি রয়েছে এমন কোনও কিছু সংশোধন করতে পারে এবং তারা নিজেরাই পড়তে পারে যে কোনও কিছু সহজেই ডাউনলোড করতে পারে মেশিন। তাদের এটি করা থেকে বিরত করার একমাত্র উপায় হ'ল আসলে তাদের অ্যাক্সেসকে সীমাবদ্ধ করা। .profileব্যবহারকারীদের সীমাবদ্ধ রাখার উপর নির্ভর করাও আদর্শ নয়, কারণ এটি তার পক্ষে নয় (সম্পাদনা করুন: আলেকসি যেমন তার উত্তরে উল্লেখ করেছেন, এটি বাইপাস করা আসলে তুচ্ছ .profile; ব্যাপারটি .profileহ'ল এটি সুবিধার জন্য, সুরক্ষার পক্ষে নয়, তাই এটি নয়) ব্যবহারকারীকে সীমাবদ্ধ করার উদ্দেশ্যে। সুরক্ষার জন্য ডিজাইন করা জিনিসগুলি যেমন নীচের জিনিসগুলি সুরক্ষা সরবরাহ করতে ব্যবহার করুন)।

এটি করার দুটি প্রাথমিক উপায় রয়েছে: আপনি ফাইল অনুমতিগুলির মাধ্যমে সেগুলিকে সীমাবদ্ধ করতে পারেন বা কেবল আপনার কনসোল অ্যাপ্লিকেশনটি চালাতে বাধ্য করতে পারেন। দ্বিতীয় উপায়টি আরও ভাল: ব্যবহারকারীদের কনসোল অ্যাপ্লিকেশনটিতে কোনও গ্রুপে সীমাবদ্ধ করা উচিত (যেমন customers); তারপরে, sshd_configনিম্নলিখিত লাইনগুলি যুক্ত করুন:

Match Group customers
ForceCommand /path/to/app

এটি যা করে তা এটিকে তৈরি করে যাতে that গোষ্ঠীর ব্যবহারকারীদের সমস্ত সংযোগ কনসোল অ্যাপ্লিকেশনটি খুলতে পারে; sftpসার্ভার সরঞ্জাম সহ তারা আর কিছু শুরু করতে পারে না । এটি তাদেরকে সিস্টেমের সাথে অন্য কিছু করতে বাধা দেয় এবং এর বিপরীতে .profileএসএসএইচ সার্ভারটি নিজেই ব্যবহার করে ( .profileশেল এগুলিকে সীমাবদ্ধ করে, শেল ForceCommandশুরু করার সাথে জড়িত না এমন অন্যান্য জিনিসগুলিও প্রতিরোধ করে)। এছাড়াও এটির বিপরীতে .profile, এটি একটি সুরক্ষা বিষয় হিসাবে ডিজাইন করা হয়েছে ; এটি বিশেষত কোনও দূষিত ব্যবহারকারীকে এড়ানো থেকে বিরত থাকার জন্য তৈরি করা হয়েছে।

(সম্ভবত নিকৃষ্ট) বিকল্পটিতে কনসোল অ্যাপ্লিকেশন চালানোর জন্য একটি নতুন ব্যবহারকারী তৈরি করা জড়িত। তারপরে আপনি সেই ব্যবহারকারীর জন্য ডেটা ডিরেক্টরিগুলি সীমাবদ্ধ করবেন, সেই ব্যবহারকারীর মালিকানাধীন কনসোল অ্যাপ সেট u+sকরুন এবং প্রোগ্রামে সেট করবেন on এই setuidবিট; এর অর্থ হ'ল যে কেউ কনসোল প্রোগ্রাম চালায় সে প্রোগ্রামের মালিকের অনুমতি নিয়ে তা করে। এইভাবে, ব্যবহারকারীর নিজস্ব ডিরেক্টরিতে অ্যাক্সেস নেই, তারা কেবল এটি প্রোগ্রামের মাধ্যমে পায়। তবে, আপনার সম্ভবত সম্ভবত ব্যবহার করা উচিত ForceCommand, কারণ এটি "কেবলমাত্র এই প্রোগ্রামটি চালান" এর সমস্ত অ্যাক্সেসকে সীমাবদ্ধ করে ।


4
আমি যুক্ত করতে চাই যে ForceCommandএসএসএইচ পোর্ট ফরওয়ার্ডিং বাধা দেয় না।
nyuszika7h

1
আসলে, নির্ভর করা .profile"আদর্শ নয়" এর চেয়ে বেশি; এটি সহজেই বাইপাস করা হয় (বিশদগুলির জন্য আমার উত্তর দেখুন) এবং এইভাবে কোনও সুরক্ষা সরবরাহ করে না, কেবল সুরক্ষার ভ্রান্ত ধারণাটি।
আলেকসি তোড়হামো

পুনঃটুইট আমি সন্দেহ করেছিলাম আপনি এটিকে বাইপাস করতে পারবেন, তবে কীভাবে নিশ্চিত ছিল না (আমি সাধারণত সন্দেহ করি যে সুরক্ষার উদ্দেশ্যে নয় এমন জিনিসগুলি বাইপাসেবল)। কিভাবে বিশদ জন্য ধন্যবাদ!
সিপাস্ট

15

.profileএটি করার চেষ্টা করবেন না কারণ এটি কোনও সুরক্ষা সরবরাহ করে না এবং ঠিক কোনও কিছুই সীমাবদ্ধ করে না!

এটা ব্যাপার না আপনি কিসের রাখা নেই .profile, আপনি কেবল এই মত, SSH কমান্ড লাইন চালানোর কমান্ড দিয়ে এটা বাইপাস করতে পারেন যেহেতু: ssh user@host command। আপনি এখনও করে সাধারণ শেল অ্যাক্সেস পেতে পারেন ssh -t user@host bash

অন্য উত্তরে উল্লিখিত মতো এসএফটিপি সাবসিস্টেমটি অক্ষম করা মোটেই সহায়তা করে না। সাবসিস্টেমগুলি মূলত কমান্ডের কেবলমাত্র এলিয়াস এবং আপনি এখনও সাধারণভাবে এসফটিপি ব্যবহার করে ব্যবহার করতে পারেন sftp -s /path/to/sftp-executable user@host

সিপিস্টের মতো এবং কিছু মন্তব্যকারী বলেছেন, অ্যাক্সেস সীমাবদ্ধ করার জন্য আপনার যথাযথ প্রক্রিয়া ব্যবহার করা উচিত। এটাই,

  • ব্যবহার করুন ForceCommandমধ্যেsshd_config
  • Passwordless লগইন এবং ব্যবহার করুন command="..."মধ্যে.ssh/authorized_keys
  • ব্যবহারকারীর শেল এমন কিছুতে পরিবর্তন করুন যা ব্যবহারকারী কী করতে পারে তা সীমাবদ্ধ করে

নোট:

  • command="..." কেবল একটি চাবি প্রয়োগ করে, সুতরাং এটি কোনও পাসওয়ার্ড বা অন্য কী ব্যবহার করে ব্যবহারকারীর জন্য ssh লগইনকে সীমাবদ্ধ করে না
  • আপনি পোর্ট ফরওয়ার্ডিং ইত্যাদিও সীমাবদ্ধ রাখতে চাইতে পারেন (পোর্ট ফরওয়ার্ডিং, এক্স 11 ফরওয়ার্ডিং, এজেন্ট ফরোয়ার্ডিং এবং পিটিআই বরাদ্দগুলি যা আমি শুনেছি)
    • AllowTcpForwarding ইত্যাদি sshd_config
    • no-port-forwarding ইত্যাদি .ssh/authorized_keys
  • আপনার যদি অন্যান্য ডেমনগুলি (এফটিপি এর মতো) চলমান থাকে তবে আপনার অবশ্যই যাচাই করা উচিত যে তারা কোনও ব্যবহারকারীকে ব্যবহার করতে দেয় না (কিছু ডেমন ব্যবহারকারীর শেলের উপর ভিত্তি করে এই সিদ্ধান্ত নিতে পারে, তাই আপনি যদি এটি পরিবর্তন করেন তবে আপনি এটি পুনরায় পরীক্ষা করতে চান)
  • আপনি ব্যবহারকারীর শেলটিকে একটি স্ক্রিপ্টে পরিবর্তন করতে পারেন যা আপনি যা চান তা করে; এটি হয় তর্ক ছাড়াই বা পছন্দ মত চালানো হয়script -c 'command-the-user-wanted-to-run'
  • উভয়ই ForceCommandএবং command="..."ব্যবহারকারীর শেলটি দিয়ে কমান্ডটি চালায়, সুতরাং যদি ব্যবহারকারীর শেলটি যেমন সেট করা থাকে তবে তারা কাজ করে না। /bin/falseঅথবা/sbin/nologin

দাবি অস্বীকার: আমি কোনওভাবেই এই বিষয়ে বিশেষজ্ঞ নই, তাই আমি বলতে পারি যে .profileজিনিসটি নিরাপদ নয়, আমি জানি না যে আমি জানি না এমন অন্যান্য পদ্ধতিগুলির সাথে কিছু "গোটচা" নেই promise সম্পর্কিত. আমার জানা মতে তারা নিরাপদ, তবে আমি ইন্টারনেটে ভুল হওয়া প্রথম ব্যক্তি হব না।


1
মনে হচ্ছে যে জন্য অন্তত ForceCommandসঙ্গে passwordless লগইন বাধ্য command=মধ্যে authorized_keys, যখন তা সামনে বাইপাস করা হয়েছে, যে সার্ভার মধ্যে একটি বাগ কারণে এর: এটা হয় অভিপ্রেত একটি দূষিত ব্যবহারকারীর বিরুদ্ধে নিরাপদ হতে, এবং একটি ব্যবহারকারী এটিকে একটি গুরুতর দুর্বলতা হিসাবে বড়, মোট ছাত্র বাইপাস এসএসএইচ সার্ভারে (এবং এইভাবে এটি একটি অগ্রাধিকারের সমাধান)। আপনি যেমন উল্লেখ করেছেন, .profileডিজাইনের মাধ্যমে বাইপাসেবল: এটি কোনও সুরক্ষা বৈশিষ্ট্য হিসাবে বিবেচিত নয়, কোনও ব্যবহারকারী এটিকে বাইপাস করে শেল বিকাশকারীদের দৃষ্টিকোণ থেকে একেবারে ঠিক।
সিপাস্ট

1
@ ক্যাপাস্ট: হ্যাঁ, আমি পোর্ট ফরওয়ার্ডিংয়ের মতো আরও বৈশিষ্ট্যগুলির অস্তিত্ব সম্পর্কে ভাবছিলাম। আমার অর্থ, আপনি যদি না জানতেন যে ssh পোর্ট ফরওয়ার্ডিংয়ের অনুমতি দেয় এবং সবেমাত্র ForceCommandঅ্যাক্সেসকে সীমাবদ্ধ রাখত, এবং এমন একটি ডেমন ছিল যা কেবলমাত্র স্থানীয়ভাবে সংযোগগুলি শোনায় এবং প্রমাণীকরণ না করে, ssh ব্যবহারকারী এখনও ডিমনটিতে অ্যাক্সেস করতে পারে। আমি তালিকাভুক্ত বৈশিষ্ট্যগুলি হ'ল উদাঃ। গিট হোস্টিং সমাধানগুলি সাধারণত অক্ষম করে এবং আমি ম্যানেজগুলিতে কোনও অতিরিক্ত "দুষ্ট চেহারা" দেখিনি, তবে কোনও ধরণের অফিসিয়াল আমি খুঁজে পাইনি ForceCommand"এটিই আপনি সুরক্ষিতভাবে ব্যবহার করেন " -তখনও, ডকুমেন্ট।
আলেক্সি তোড়হামো

বোঝা যাচ্ছে যে নেতারা ~/.profileব্যবহারকারী সম্পাদনাযোগ্য এবং নিরাপত্তার জন্য না সহায়ক, কিন্তু আপনি তা রেখে cpast এর কৌশল অর্থপূর্ণ বানাতে পারে /etc/profile? আপনি সঠিক ব্যবহারকারীদের মধ্যে সীমাবদ্ধ করতে ইউআইডি চেক করতে পারেন।
ছানা

1
@ ছিক্স: না, এতে ঠিক একই সমস্যা রয়েছে। সমস্যাটি ফাইলটি ব্যবহারকারী-সম্পাদনাযোগ্য নয়; সমস্যাটি হ'ল উভয় ফাইলই পুরোপুরি বাইপাস করা যায়। ফাইলগুলি কেবল লগইন শেলগুলির জন্য ব্যবহৃত হয়, যা আপনি কেবল বলেন তবে আপনি পেয়ে থাকেন তবে আপনি ssh user@hostযদি ssh কে একটি কমান্ড চালাতে বলেন - যেমন। ssh user@host command- আপনি আর লগইন শেল পাবেন না এবং ফাইলগুলি একেবারে স্পর্শ করা হবে না। সুতরাং কেউ কেউ এসএসএসে অতিরিক্ত যুক্তি দিয়ে ফাইলগুলির সাথে যে কোনও বিধিনিষেধ তৈরি করার চেষ্টা করেছিল তা আপনি তুচ্ছভাবে বাইপাস করতে পারেন।
আলেক্সি তোড়হামো 24'14

2
@ ছিকস: এছাড়াও, আমি ঠিক বুঝতে পেরেছি আপনি cpast উল্লেখ করেছেন; সিপিস্টের উত্তরের পদ্ধতিটি ব্যবহার করে না .profile, এটি ব্যবহার করে sshd_configএবং নিরাপদ হওয়া উচিত। তিনি কেবল .profileএকটি পদ্ধতি হিসাবে উল্লেখ করেছেন যা আপনার এটি করার জন্য ব্যবহার করা উচিত নয়।
আলেক্সি তোড়হামো

1

এসএসএইচ সক্ষম করা এবং বিশ্বব্যাপী এবং ব্যবহারকারী / গ্রুপ উভয়ই এসএফটিপি অক্ষম করা সম্ভব।

আমার ব্যক্তিগতভাবে এটি প্রয়োজন কারণ আমি এসএসএইচ-র উপরের কিছু গিট সংগ্রহস্থলগুলিতে অ্যাক্সেস দিতে চাই এবং আমি প্রয়োজনীয় সিস্টেমগুলি অক্ষম করতে চাই। সেক্ষেত্রে এসএফটিপি দরকার হয় না।

বিশ্বব্যাপী

আপনি কয়েকটি উপায়ে সমস্ত ব্যবহারকারীর জন্য এসএফটিপি অক্ষম করতে পারেন।

অনুপস্থিত সাবসিস্টেম

এসএসএইচ দ্বারা ব্যবহৃত এসএফটিপি ডিমন Subsystemকীওয়ার্ডের মাধ্যমে কনফিগার করা যায় । sshd_config(5)ম্যানুয়াল থেকে :

Subsystem
        Configures an external subsystem (e.g. file transfer daemon).
        Arguments should be a subsystem name and a command (with optional
        arguments) to execute upon subsystem request.

        The command sftp-server(8) implements the “sftp” file transfer
        subsystem.

        Alternately the name “internal-sftp” implements an in-process
        “sftp” server.  This may simplify configurations using
        ChrootDirectory to force a different filesystem root on clients.

        By default no subsystems are defined.

শেষ লাইনটি পরামর্শ দেয় যে "sftp" এর জন্য কোনও সাবসিস্টেম সংজ্ঞায়িত না করাই যথেষ্ট হবে।

একটি মিথ্যা মিথ্যা

আপনি এসএসএইচ দ্বারা ব্যবহৃত অযৌক্তিক কিছুতে এসএফটিপি ডিমন সেট করেও এসএফটিপি অক্ষম করতে পারেন। উদাহরণস্বরূপ, "sftp" সাবসিস্টেমটি এতে কনফিগার করুন /bin/false:

Subsystem sftp /bin/false

যখন কোনও কিছু এসএফটিপি-র মাধ্যমে লগ ইন করার চেষ্টা করবে, তখন এসএসএইচ ডেমন "এসএফটিপি ডেমন" স্প্যান করার চেষ্টা করবে /bin/false/bin/falseপ্রোগ্রামটি শুধুমাত্র এক জিনিস আছে, এবং যে একটি ত্রুটির কোড আসতে হয়। এসএফটিপি সংযোগের প্রচেষ্টা কার্যকরভাবে অস্বীকার করা হয়েছে।

প্রতি ব্যবহারকারী / গোষ্ঠী

ব্যবহারকারী, গোষ্ঠী বা অন্যান্য কয়েকটি মাপদণ্ডে প্রতি এসএফটিপি অক্ষম করাও সম্ভব।

আপনি যদি ব্যবহারকারীকে নিয়মিত শেল প্রম্পট পেতে চান তবে এটি কাজ করে না। আপনার শেল অ্যাক্সেস থাকলে আপনি বেশিরভাগ স্টাফকে বিভ্রান্ত করতে পারবেন বলেও তা বোঝায় না। আপনি কেবলমাত্র একটি নির্দিষ্ট প্রোগ্রামের অ্যাক্সেস দিতে চাইলেই এটি কাজ করবে।

মেলা

ব্যবহারকারীর একটি সেট মেলে, আপনি Matchকীওয়ার্ড দিয়ে এসএসএইচ কনফিগার করতে পারেন । sshd_config(5)ম্যানুয়াল থেকে :

Match
        ...

        The arguments to Match are one or more criteria-pattern pairs or the
        single token All which matches all criteria.  The available criteria
        are User, Group, Host, LocalAddress, LocalPort, and Address.  The
        match patterns may consist of single entries or comma-separated
        lists and may use the wildcard and negation operators described in
        the PATTERNS section of ssh_config(5).

        ...

উদাহরণ দুটি:

  • Match User eva "ইভা" ব্যবহারকারীর সাথে মেলে
  • Match User stephen,maria "স্টিফেন" এবং "মারিয়া" ব্যবহারকারীদের সাথে মেলে
  • Match Group wheel,adams,simpsons "চাকা", "অ্যাডামস", "সিম্পসনস" গোষ্ঠীর সাথে মেলে

আপনি যদি আরও তথ্য চান, sshd_config(5)ম্যানুয়ালটিতে লোড রয়েছে ।

জোর করে আদেশ

সাধারণত আপনি যখন এসএসএইচের মাধ্যমে সংযোগ করেন তখন আপনি ব্যবহারকারীর লগইন শেলটি পান তবে এসএসএইচ একটি নির্দিষ্ট কমান্ড জোর করার জন্য কনফিগার করা যেতে পারে। কমান্ডটি এসএফটিপি সহ যে কোনও এসএসএইচ সংযোগের জন্য বাধ্য করা হয়েছিল এবং সুতরাং আপনার যে কমান্ডটি চান তা জোর করার বিকল্প থাকতে পারে।

কমান্ড টু ফোর্স ForceCommandকীওয়ার্ড দিয়ে কনফিগার করা যায় । sshd_config(5)ম্যানুয়াল থেকে :

ForceCommand
        Forces the execution of the command specified by ForceCommand,
        ignoring any command supplied by the client and ~/.ssh/rc if
        present.  The command is invoked by using the user's login shell
        with the -c option.  This applies to shell, command, or subsystem
        execution.  It is most useful inside a Match block.  The command
        originally supplied by the client is available in the
        SSH_ORIGINAL_COMMAND environment variable.  Specifying a command of
        “internal-sftp” will force the use of an in-process sftp server that
        requires no support files when used with ChrootDirectory.  The
        default is “none”.

সুতরাং আপনি ব্যবহার করতে চান এমন সীমাবদ্ধ কমান্ড জোর করতে পারেন ForceCommand <your command>। উদাহরণ স্বরূপ:

Match User kim
        ForceCommand echo 'successful login man, congrats'

উদাহরণ

আমার ক্ষেত্রে যেখানে আমি গিট অ্যাক্সেস দিতে চাই, আমার কেবল ব্যবহারকারীর অ্যাক্সেস থাকা দরকার git-shell। এটি এমন একটি বিভাগ যা আমার গিট ব্যবহারকারীদের জন্য কিছু সুরক্ষা বিকল্পের সাথে এসএফটিপি অক্ষম করে:

Match Group git

        # have to do this instead of setting the login shell to `git-shell`,
        # to disable SFTP
        ForceCommand /usr/bin/git-shell -c "$SSH_ORIGINAL_COMMAND"

        # disable stuff we don't need
        AllowAgentForwarding no
        AllowTcpForwarding no
        AllowStreamLocalForwarding no
        PermitOpen none
        PermitTunnel no
        PermitTTY no
        X11Forwarding no

আমার ক্ষেত্রে, আমি কেবলমাত্র একটি নির্দিষ্ট অনুমোদিত কী (যেমন, sshd_config ফাইলে কোনও পরিবর্তন নেই) এর জন্য মাইএসকিউএল অ্যাক্সেসের (এসএফটিপি অ্যাক্সেস এবং এসএসএইচ টার্মিনাল উইন্ডো উভয়ই অস্বীকার করা) করতে চাইছিলাম। আমি নির্দিষ্ট কীটির জন্য নিম্নলিখিত ~ / .ssh / অনুমোদিত_keys বিকল্পগুলির সাহায্যে এটি পরিচালনা করতে পেরেছি: কমান্ড = "/ usr / bin / প্রতিধ্বনি 'কেবল MySQL অ্যাক্সেস অনুমোদিত is" = "127.0.0.1:3306"
মার্টিন_এটিএস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.