sshd কনফিগারেশন যাচাই করুন


19

আমি কীভাবে কনফিগারেশন যাচাই করতে পারি sshd?

উদাহরণস্বরূপ, আমি নিশ্চিত করতে চাই যে এই সেটিংসটি সেট এবং প্রয়োগ হয়েছে:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

ম্যানুয়ালি ফাইলটির বিষয়বস্তু যাচাই করার একমাত্র উপায় sshd_config, বা আমি sshdনিশ্চিত হয়ে তদন্ত করতে পারি?


2
আপনি যাচাই দ্বারা বোঝাতে চান? আপনি কীভাবে নিশ্চিত যে আপনি যে একটি কনফিগার পরিবর্তন করেছেন তা বৈধ কিনা তা নিশ্চিত হয়ে জিজ্ঞাসা করছেন? আপনি কি জিজ্ঞাসা করছেন লিন্টের মতো কোনও সরঞ্জাম আছে যা বৈধ কনফিগারেশনের জন্য পরীক্ষা করবে?
জোরডাচি

2
আমি মনে করি না যে প্রশ্নটি অস্পষ্ট: একটি কনফিগার বিকল্পের জন্য মূল্য কী তা যাচাই করার কোনও উপায় নেই। আপনি যদি #UseLogin nossd_config ফাইলটি দেখতে পান তবে এর অর্থ ইউজলগিন হ্যাঁ বা UseLogin নেই? আপনার ডিফল্ট মানটি খুঁজতে ম্যানুয়ালটি উল্লেখ করতে হবে যা সংকলনের সময় পরিবর্তন করা যেতে পারে। এতদূর
অব্যর্থ

উত্তর:


27

কমান্ড লাইন বিকল্পের সাথে অনুরোধ করা একটি বর্ধিত পরীক্ষা মোড রয়েছে, এটি এটি -Tকরে। উদাহরণ স্বরূপ:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

বিকল্পটি ২০০৪ সাল থেকে পোর্টেবল ওপেনএসএসএইচে রয়েছে, সিএফ। প্রতিশ্রুতিবদ্ধ e7140f2 । এটি 5.1p1 দিয়ে মুক্তি পেয়েছিল, ২০০ July সালের জুলাই মাসে তৈরি হয়েছিল, সিএফ। 5.1-র জন্য নোট প্রকাশ করুন , তাই এটি আজ সমর্থিত সমস্ত ওপেনএসএইচ সার্ভার ইনস্টলেশনতে উপস্থিত রয়েছে।


3
তবে নোট করুন যে এটি /etc/ssh/sshd_configফাইল থেকে ডিফল্ট সেটিংস + সেটিংস প্রদর্শন করবে । আপনার সিস্টেমের sshdমতো /etc/init.d/ssh reloadবা সমতুল্য কিছু দিয়ে এটিকে পুনরায় লোড না করা পর্যন্ত ফাইল থেকে সেটিংস সম্ভবত এখনও সক্রিয় থাকবে না ।
mivk

2
@ মিভক ভাল পয়েন্ট, তবে এটি অবশ্যই কোর্সের পক্ষে সমান, কারণ এটি সাধারণ যে আমরা পরিবর্তনগুলি করার পরে ঠিক এই ধরণের কমান্ড ব্যবহার করি, তবে বাস্তবে সেগুলি প্রয়োগ করার আগে, কারণ আমরা যা যা ঘটছে তা যাচাই করতে চাই। উদাহরণস্বরূপ, apache2ctl -Sএকইভাবে আচরণ করে।
জোসিপ রডিন

4

এই সব আপনার সার্ভার সংজ্ঞা ডাম্প করা হবে না, আপনি একটি বাগাড়ম্বরপূর্ণ ডিবাগ পতাকা দিয়ে সার্ভারে সংযোগ চেষ্টা করতে পারেন: ssh -v user@server। এটি আপনাকে প্রচুর তথ্য দেবে যা sshd কনফিগারেশনে সক্ষম বিকল্পগুলি প্রতিফলিত করবে।

উদাহরণস্বরূপ, -v সুইচ (কী স্বাক্ষর, ডোমেন এবং আইপি ঠিকানাগুলি উদ্দেশ্যমূলকভাবে ছদ্মবেশযুক্ত) এর সাথে এই সংযোগের আউটপুটটি দেখুন :

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

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

আপনি আরও "ভি" অক্ষর নির্দিষ্ট করে তথ্য আউটপুট স্তরকে বাড়িয়ে দিতে পারেন, তবে তারপরে আপনি সম্ভবত যা চান তার চেয়ে আরও নিম্ন স্তরের তথ্য পেতে পারেন।


3

sshd কমান্ড কনফিগারেশন সাধারণত নিম্নলিখিত ফাইল পাওয়া যায়: /etc/ssh/sshd_config

রানটাইম কনফিগারেশনটি জিজ্ঞাসা করতে, আপনি বর্ধিত পরীক্ষা মোড ব্যবহার করতে পারেন sshd -Tযা আপনাকে সেটিংসের ক্লায়েন্টের মিলের পরীক্ষা করতে দেয় test


1
আমি মনে করি না যে এটি জিজ্ঞাসা করছে এমন প্রশ্নের উত্তর দেয়, তবে তার প্রশ্নটি সম্পূর্ণ পরিষ্কার নয়।
জোরডাচি

1
দেখে মনে হচ্ছে তিনি কীভাবে কনফিগারেশন যাচাই করবেন জিজ্ঞাসা করছেন। আমি যতটা অবগত আছি, রানটাইমের সময় sshd এর কনফিগারেশনটি জিজ্ঞাসা করার কোনও উপায় নেই। সুতরাং, কনফিগারেশনটি কেবলমাত্র আমি উল্লিখিত ফাইলটিতেই পাওয়া যাবে।
gparent

আপনি যেমন বলেছিলেন, প্রশ্নটির কোনও অর্থ নেই তাই আমি বুঝতে পেরেছিলাম যে ওপি ফাইলটি কোথায় বা এর সঠিক নামটি জানত না।
gparent

যদি আপনি 4 বছর পরে একেবারে কোনও বৈধ কারণে আমাকে ছাড়িয়ে যান, আপনার সাধারণ জ্ঞানটি ব্যবহার করুন এবং প্রশ্নের ইতিহাস পরীক্ষা করুন, তারপরে একটি সম্পাদনার পরামর্শ দিন।
gparent

@gpards মূল প্রশ্নটি কিছুটা অস্পষ্ট ছিল এবং কনফিগারেশন ফাইলের পথে একটি টাইপো ছিল, সুতরাং আপনার পরিবর্তে প্রশ্নের মধ্যে স্ট্রিংটি ঠিক করার জন্য সম্পাদনা ফাংশনটি ব্যবহার করা উচিত ছিল; এবং যে কোনও উপায়ে, যাচাইকরণ প্রশ্নের উত্তর এখন উপরে দেখানো হয়েছে
জোসিপ রডিন 31:58

2

একটি চলমান sshd উদাহরণের কনফিগারেশন কোয়েরি করার কোন জ্ঞাত উপায় নেই, আমার ধারণা, আপনি যদি ওপেনশ সার্ভারটি উল্লেখ করছেন। আপনি যা করতে চান তার উপর নির্ভর করে আপনি সার্ভারটি পুনরায় চালু করার আগে এটি বৈধ কিনা তা নিশ্চিত করার জন্য কনফিগারেশন ফাইলটি পরীক্ষা করার জন্য -t পতাকা ব্যবহার করতে পারেন, যাতে আপনাকে লাথি মেরে না ফেলে, এসএসপি। আপনার যদি সার্ভারে কোনও আউট-ব্যান্ড অ্যাক্সেস না থাকে।


2

অন্যান্য উত্তরগুলির পরামর্শ অনুসারে / etc / ssh / sshd_config ফাইলটি দেখার সমস্যাটি হ'ল এটি সম্পূর্ণরূপে কনফিগারেশনটি ধারণ করে না। এই ফাইলে আপনার যে কোনও কনফিগারেশন ভেরিয়েবলের মান রয়েছে যা আপনি ডিফল্টগুলিকে ওভার-রাইড করতে সেট করতে চান এবং পাঠানো হিসাবে sshd এ অন্তর্নির্মিত ডিফল্টকে মন্তব্য হিসাবে অন্তর্ভুক্ত করা হয়।

যদি শিপড সংস্করণটির পরিবর্তে একটি কাস্টম কনফিগারেশন ফাইল ইনস্টল করা থাকে তবে আপনি sshd তে সংকলিত ডিফল্টগুলির দৃষ্টিভঙ্গি হারাবেন এবং এটি যদি কাস্টম বিল্ড হয় তবে ডিফল্টগুলি sshd_config এর মন্তব্যের সাথে মেলে না।

অতিরিক্তভাবে, -f বিকল্পের সাহায্যে বিকল্প কনফিগারেশন ফাইলের সাথে sshd চালানো পুরোপুরি সম্ভব, সুতরাং / etc / ssh / sshd_config এ সঞ্চিত কোনও বর্তমানের সেটিংস প্রতিফলিত না করে।

এটি প্রশ্নটিকে বেশ বৈধ করে তোলে এবং যতদূর আমি জানি, কোনও নিশ্চিততার সাথে উত্তর দেওয়া যায় না।


যে সকল সত্য, কিন্তু এটা সার্ভার ডিফল্ট কনফিগারেশনে কম্পাইল আছে একটি প্যাকেজ থেকে ইনস্টল করা sshd কমান্ড চালানো হবে 99% প্রযোজ্য নয়।
অ্যান্ড্রু Schulman

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