অ্যাপল কি এই ফাইলটিকে [ /System/Library/LaunchDaemons/ssh.plist
] অবশ্যই লক করেছে ?
হ্যাঁ, তাদের রয়েছে, আপনাকে এসআইপি ( সিস্টেম ইন্টিগ্রিটি প্রোটেকশন ) অক্ষম করতে হবে , তবে মনে রাখবেন যে ssh.plist
এসএসএইচ সার্ভার পোর্টটি পরিবর্তন করার জন্য সম্পাদনাটি একমাত্র বিকল্প নয়, একই ফলাফল অর্জনের অন্যান্য উপায় রয়েছে।
পোর্টটি পরিবর্তন করার জন্য এখানে কমপক্ষে 4 টি উপায় sshd
রয়েছে :
সংশোধন করা হচ্ছে /System/Library/LaunchDaemons/ssh.plist
:
পেশাদাররা : কনফিগার করার সবচেয়ে সহজ উপায় sshd
, sshd
সিস্টেম পছন্দগুলি দিয়ে শুরু করে> ভাগ করে নেওয়া> রিমোট লগইন নতুন পোর্টে শোনে।
কনস (কনসোলিউটড সেটআপ) (দুটি পুনঃসূচনা এবং এসআইপি নিষ্ক্রিয় করা / পুনরায় সক্ষম করা দরকার ) Cons
ব্যবহারের ক্ষেত্রে : sshd
বন্দরটির চূড়ান্ত পরিবর্তন
একটি নতুন প্লিস্ট তৈরি করা হচ্ছে /Library/LaunchDaemons/ssh2.plist
:
পেশাদাররা : sshd
স্ট্যান্ডার্ড এবং নতুন বন্দরে দ্বৈত অপারেশন ।
কনস : sshd
নতুন বন্দরে শুরু করার জন্য কেবলমাত্র সিএলআই পদ্ধতি ।
ব্যবহারের ক্ষেত্রে : sshd
স্ট্যান্ডার্ড পোর্ট এবং অতিরিক্ত পোর্ট উভয়ই শুনতে হবে।
"Ssh" এন্ট্রিগুলিতে এতে পরিবর্তন করা হচ্ছে /etc/services
:
পেশাদাররা : সহজ পদ্ধতি, এসআইপি মোকাবেলা করার প্রয়োজন নেই, sshd
সিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইন নতুন পোর্টে শোনে started
কনস : পার্শ্ব প্রতিক্রিয়া: ssh
রিমোট সার্ভারের সাথে সংযোগ করার সময় নতুন পোর্টের ডিফল্ট (তার জন্য কার্যকারিতা নেই)।
কেস ব্যবহার করুন : অস্থায়ী বন্দর পরিবর্তন বা sshd
ভিন্ন বন্দরে চলমান পরীক্ষা করা ।
প্যাকেট ফিল্টার সহ 22 বন্দরে নতুন বন্দরে পুনর্নির্দেশ করা হচ্ছে:
পেশাদাররা : এসআইপি নিয়ে কাজ করার দরকার নেই, sshd
সিস্টেম পছন্দগুলি দিয়ে শুরু করে> ভাগ করে নেওয়া> রিমোট লগইন নতুন বন্দরে শোনা যাচ্ছে বলে মনে হয়।
কনস কিছুটা অ স্বচ্ছ (: sshd
কনফিগারেশন অস্পৃষ্ট কিন্তু sshd
((env ভেরিয়েবল মাধ্যমে দূরবর্তী ক্লায়েন্ট এটা মনে করে বন্দর 22 এর সাথে সংযুক্ত হচ্ছে অন্য শোনে / অতিরিক্ত বন্দর) (সিস্টেম পছন্দসমূহ নির্ভরযোগ্য নয় ফায়ারওয়ালের অবস্থা) এবং বিভ্রান্তিকর, অতি ক্ষুদ্র পার্শ্ব প্রতিক্রিয়া SSH_CLIENT
এবং SSH_CONNECTION
)) ।
ব্যবহারের কেস : sshd
বন্দরটির সুনির্দিষ্ট বা অস্থায়ী পরিবর্তন , sshd
মানক বন্দর এবং অতিরিক্ত বন্দরের উভয়ই শুনতে হবে।
আসুন তাদের ঘনিষ্ঠভাবে তাকান। (নতুন বন্দরটি নির্বাচন করার সময়, এটি চালিয়ে গিয়ে অন্য কোনও পরিষেবা ব্যবহার না করে তা নিশ্চিত করুন sudo lsof -i -n -P | grep <your port>
))
1. পরিবর্তন করা হচ্ছে /System/Library/LaunchDaemons/ssh.plist
এটিই আপনি চেষ্টা করেছেন এমন পদ্ধতি, এখানে এটি সম্পূর্ণ করার জন্য বর্ণনা করতে দিন:
- আপনার ম্যাকটি ⌘Rপুনরায় চালু করুন এবং ম্যাকোস পুনরুদ্ধারে প্রবেশের জন্য আপনার ম্যাকটি পুনরায় আরম্ভ শুরু করার সাথে সাথেই ধরে রাখুন ।
- মেনু বার থেকে ইউটিলিটিস> টার্মিনাল নির্বাচন করুন।
csrutil disable
এসআইপি অক্ষম করতে টাইপ করুন ।
- অ্যাপল মেনু> পুনঃসূচনা নির্বাচন করুন।
লগ ইন, সম্পাদনা /System/Library/LaunchDaemons/ssh.plist
এবং শ্রোতাদের বিভাগটি সংশোধন করুন। উদাহরণস্বরূপ, বন্দরটি এতে পরিবর্তন করতে 2222
:
আপনার ম্যাকটি ⌘Rপুনরায় চালু করুন এবং ম্যাকোস পুনরুদ্ধারে প্রবেশের জন্য আপনার ম্যাকটি পুনরায় আরম্ভ শুরু করার সাথে সাথেই ধরে রাখুন ।
- মেনু বার থেকে ইউটিলিটিস> টার্মিনাল নির্বাচন করুন।
csrutil enable
এসআইপি সক্ষম করতে টাইপ করুন এবং পুনঃসূচনা করুন।
এসএসএইচ সার্ভার এখন নতুন বন্দরে শুনবে এবং আপনি sshd
সিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইনের মাধ্যমে যথারীতি শুরু করতে পারেন ।
2. একটি নতুন plist তৈরি করা /System/Library/LaunchDaemons/ssh2.plist
এই পদ্ধতিটি উত্তরে এই উত্তরে বর্ণিত হয়েছে , যা মূলত বলে:
- একটি নতুন স্টার্টআপ স্ক্রিপ্ট তৈরি
/System/Library/LaunchDaemons/ssh.plist
করতে অনুলিপি করুন ।/Library/LaunchDaemons/ssh2.plist
sshd
/Library/LaunchDaemons/ssh2.plist
বিল্ট-ইন থেকে নতুন স্টার্টআপ স্ক্রিপ্টকে আলাদা করতে লেবেলটি সংশোধন করুন , উদাহরণস্বরূপ একটি নম্বর "2" যুক্ত করে:
<key>Label</key>
<string>com.openssh.sshd2</string>
পূর্ববর্তী পদ্ধতির মতো শ্রোতাদের বিভাগে বন্দরটি পরিবর্তন করুন। উদাহরণস্বরূপ, বন্দরটি 2222 এ পরিবর্তন করতে:
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>2222</string>
<key>Bonjour</key>
<array>
<string>ssh</string>
<string>sftp-ssh</string>
</array>
</dict>
</dict>
sshd
নতুন বন্দরে শুরু করুন:
sudounchctl লোড -w / লাইব্রেরি / লঞ্চডেমোনস / এসএস 2.plist
(এটি থামাতে, চালান sudo launchctl unload /Library/LaunchDaemons/ssh2.plist
)
এসএসএইচ সার্ভারটি এখন নতুন বন্দরে শুনবে। আপনি এখনও স্ট্যান্ডার্ড পোর্ট (22 / টিসিপি) শোনার এসএসএইচ সার্ভারের আরেকটি উদাহরণ শুরু করতে সিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইন ব্যবহার করতে পারেন । launchd
উভয় বন্দরে শুনবে:
$ sudo lsof -i -P -n
launchd 1 root 42u IPv6 0x9df385961b132cdf 0t0 TCP *:2222 (LISTEN)
launchd 1 root 44u IPv4 0x9df385961c81db1f 0t0 TCP *:2222 (LISTEN)
launchd 1 root 45u IPv6 0x9df385961b132cdf 0t0 TCP *:2222 (LISTEN)
launchd 1 root 47u IPv4 0x9df385961c81db1f 0t0 TCP *:2222 (LISTEN)
launchd 1 root 48u IPv6 0x9df385961b133e1f 0t0 TCP *:22 (LISTEN)
launchd 1 root 49u IPv4 0x9df385961b22d51f 0t0 TCP *:22 (LISTEN)
launchd 1 root 50u IPv6 0x9df385961b133e1f 0t0 TCP *:22 (LISTEN)
launchd 1 root 51u IPv4 0x9df385961b22d51f 0t0 TCP *:22 (LISTEN)
3. "ssh" এন্ট্রিগুলিতে পরিবর্তন করা /etc/services
sshd
এই পদ্ধতিতে বন্দরটি পরিবর্তন করতে , নিম্নলিখিত হিসাবে এগিয়ে যান:
সম্পাদনা করুন /etc/services
, এই এন্ট্রিগুলি দেখুন:
ssh 22/udp # SSH Remote Login Protocol
ssh 22/tcp # SSH Remote Login Protocol
এবং 22 আপনার পছন্দসই একটি পোর্ট সঙ্গে পোর্ট প্রতিস্থাপন।
আপনি সিস্টেম পছন্দগুলি> ভাগ করে নেওয়া> রিমোট লগইন সহ এসএসএইচ সক্ষম করতে পারেন এবং sshd
নতুন বন্দরে শুনবেন।
কেন এই কাজ করে? আপনি যদি /System/Library/LaunchDaemons/ssh.plist
ফাইলটির শ্রোতাদের বিভাগটি একবার দেখে থাকেন তবে দেখতে পাবেন যে এটিতে sshsshd
নামক পরিষেবাটিতে অর্পিত বন্দরে শুনতে কনফিগার করা হয়েছে :/etc/services
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>ssh</string>
(...)
</dict>
এটি নিঃসন্দেহে সহজতম পদ্ধতি, তবে এর একটি অপূর্ণতা রয়েছে: এসএসএইচ ক্লায়েন্ট আশা করবে রিমোট এসএসএইচ সার্ভারগুলি নতুন বন্দরে (পোর্ট 22 এর পরিবর্তে) শুনতে পাবে ( ইঙ্গিতটির জন্য জ্যাকারনকে ধন্যবাদ )। এটি হ'ল ডিফল্ট এসএসএইচ পোর্টটি কোনটি তা খুঁজে বের করার জন্য ssh
পড়ে /etc/services
।
সৌভাগ্যবশত সেখানে একটা হল সহজ সমাধান uncomment: এই জন্য Port 22
যে /etc/ssh/ssh_config
(দেখুন man ssh_config
আরও তথ্যের জন্য)।
৪. প্যাকেট ফিল্টার সহ নতুন বন্দরে পোর্ট ২২ পুনঃনির্দেশ করা হচ্ছে
পদ্ধতিটি ম্যাকস প্যাকেট ফিল্টার (পিএফ) ব্যবহার করে 22 বন্দরে প্রাপ্ত সমস্ত অনুরোধগুলি নতুন sshd
বন্দরে পুনর্নির্দেশ করতে ( ধারণাটির জন্য অ্যান্ড্রু মর্টনকে ধন্যবাদ ):
/etc/pf.anchors/sshd
বিষয়বস্তু সহ একটি নতুন অ্যাঙ্কর ফাইল তৈরি করুন ( 2222
আপনার পছন্দের কোনও বন্দর দিয়ে প্রতিস্থাপন করুন):
rdr pass inet proto tcp from any to any port = 2222 -> 127.0.0.1 port 22
# If you want `sshd` to listen on port 22 too, comment out the line below
block drop in quick proto tcp from any to any port = 22
সম্পাদনা করে "sshd" অ্যাঙ্কর বিধি যুক্ত করুন /etc/pf.conf
( ক্রমটি প্রাসঙ্গিক!):
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
# Load sshd redirect rule
rdr-anchor "sshd"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
# Load other sshd rules
anchor "sshd"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
# Tell PF where to find the sshd anchor
load anchor "sshd" from "/etc/pf.anchors/sshd"
প্যাকেট ফিল্টার সক্ষম এবং পুনরায় লোড করুন:
sudo pfctl -F all -ef /etc/pf.conf
(এটি অক্ষম করতে, চালান sudo pfctl -d
))
মনে রাখবেন যে:
- ম্যাকোস ফায়ারওয়াল (সিস্টেম পছন্দসমূহ> সুরক্ষা ও গোপনীয়তা> ফায়ারওয়াল) প্যাকেট ফিল্টারটির নিচে রয়েছে, যাতে আপনি যখন কমান্ড লাইনে প্যাকেট ফিল্টারটি অক্ষম করেন, আপনি ফায়ারওয়ালটিও অক্ষম করে দিচ্ছেন, এমনকি যদি পছন্দগুলি প্যানেলটি প্রতিফলিত না করে তবেও পরিবর্তন.
- এসএসএইচ ক্লায়েন্টরা ভাবেন যে তারা
SSH_CLIENT
এবং SSH_CONNECTION
এনভিভ ভেরিয়েবলের মাধ্যমে 22 পোর্টের সাথে সংযুক্ত হচ্ছে ।
সম্পাদনা sshd_config
কাজ করে না
sshd
অন্যান্য অপারেটিং সিস্টেমে চলমান ব্যবহারকারীরা এসএসএইচ ডেমন কনফিগারেশন ফাইল /etc/ssh/sshd_config
,। ম্যাকোসে, তবে নির্দেশিকাটি সম্পাদনা করা পছন্দসই ফলাফল অর্জন করবে নাPort
/etc/ssh/sshd_config
।