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