এসএসএইচ: একটি কমান্ডে কনফিগার ফাইলের মান কীভাবে পরিবর্তন করতে হয়


6

আমি এর মান কিভাবে পরিবর্তন করতে পারেন এর কথা বলা যাক, PasswordAuthentication/etc/ssh/sshd_configকমান্ড কি?

পাশাপাশি, আমি মূল্য দিতে চাই "কী" এর সামনে একটি # সরান। এই সমস্ত এক কমান্ড হতে হবে না। আমি বেশ কয়েকটি সার্ভার সেটআপ করেছি এবং সমস্ত কিছু ক্লান্তিকর হয়ে পড়েছে তা মনে করে, তাই আমি পেস্ট অনুলিপি করতে পারি এমন কয়েকটি আদেশ পেতে চাই এবং এটি ভবিষ্যতের রেফারেন্সের জন্য আমার কাজ করে the

নমুনা মান:

PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
UseDNS no

উত্তর:


11

নিয়মিত এক্সপ্রেশন এবং সেড এ জাতীয় জিনিসগুলির সাথে সহায়তা করতে পারে।

sed -re 's/^(PasswordAuthentication)([[:space:]]+)no/\1\2yes/' -i.`date -I` /etc/ssh/sshd_config

আমার ডেবিয়ান সিস্টেমে, এটা টগল হবে PasswordAuthentication noথেকে PasswordAuthentication yesকী এবং মান মধ্যে শূণ্যস্থান সংখ্যা নির্বিশেষে।

আসল ফাইলটির ব্যাকআপ তৈরি করার সময়, তারিখ ( sshd_config.2014-05-28) দ্বারা প্রত্যয় যুক্ত প্রত্যুত্তর সহ এটি ফাইলের (অন্তর্ভুক্ত সম্পাদনা) বিকল্পটি প্রতিস্থাপন করবে ।

হ্যাঁ এবং অন্য উপায়ে টগল না করার জন্য স্থানগুলি স্যুইচ করুন।

নেতৃস্থানীয় অপসারণের জন্য প্রকাশটি #এরকম কিছু:

 sed -re 's/^(\#)(PasswordAuthentication)([[:space:]]+)(.*)/\2\3\4/' 

-আর একটি নেতৃস্থানীয়- #সাইন প্রবেশের জন্য :

 sed -re 's/^(PasswordAuthentication)([[:space:]]+)(.*)/#\1\2\3/' 

#সামনে একটি alচ্ছিক-সাইন দিয়ে একটি লাইন টগল করতে (ধন্যবাদ বার্লাপ):

sed -re 's/^(\#?)(PasswordAuthentication)([[:space:]]+)no/\2\3yes/' 

এই সমস্ত এক্সপ্রেশনটিতে আপনি PasswordAuthenticationযে কোনও অপশন পরিবর্তন করতে চান যা আপনি পরিবর্তন করতে চান - সম্ভবত শেল স্ক্রিপ্টে এটি একটি চাবিও তৈরি করতে পারেন এবং "এসএসডিডি বিকল্প টগল সরঞ্জাম" তৈরি করুন।

শেড এবং রেজেক্স সমস্ত মজাদার এবং গেমস, তবে আমি নিশ্চিত যে আপনার প্রচুর সিস্টেম থাকলে ভ্যালেন্টাইন কনফিগারেশন পরিচালনার বিষয়ে সঠিক right ব্যক্তিগতভাবে আমি কেবলমাত্র কয়েকটি সিস্টেমে অ্যাডকিপার / বাজার ব্যবহার করি যা খুব কমই পরিবর্তিত হয় - এটি কনফিগারেশন ম্যানেজমেন্ট নয়, তবে এটি আমাকে সংস্করণ দেয়, তাই আমি রেজেক্সের সাথে স্ক্রু করার পরে একটি ওয়ার্কিং কনফিগারেশন ফিরে পেতে পারি sed -i। :)


#অনুসন্ধানের সময় optionচ্ছিক চিহ্নটি অন্তর্ভুক্ত করতে আপনি কি আপনার রেজেক্সকে সংশোধন করতে পারেন , তবে প্রতিস্থাপনে নয়? আমি # চিহ্নটি সরাতে চাই তার আগেই PasswordAuthentication, কেবল এটি উপস্থিত থাকলেই।
ব্রায়ান গ্রাহাম

হুঁ। একটি লাইন 's / ^ (\ #?) / Foo /' এর শুরুতে alচ্ছিক চরিত্রের সন্ধান করা সহজ তবে শর্তসাপেক্ষে এটিকে ছেড়ে দেওয়া অন্য জিনিস thing আমাকে সেড এবং রেজেক্স (7) এর ম্যানুয়ালগুলি অধ্যয়ন করতে হবে, এটি এর আওতার বাইরে। :) তবে আপনি এখানে দুটি এক্সপ্রেশন একত্রিত করতে পারেন - প্রথমে KEY এর জন্য মন্তব্য-চিহ্নটি সরিয়ে ফেলুন, তারপরে KEY কে হ্যাঁ বা না-তে টগল করুন।
কেনে

@ কেনা আপনি অনুসন্ধানে, আপনি যে অংশটি চান তা এবং যে অংশটি আপনি চান না সেগুলি ক্যাপচার করতে পারেন এবং প্রতিস্থাপনে আপনি যে অংশটি চান তা অন্তর্ভুক্ত করতে পারেন।
বার্লপ

যদি কেউ হ্যাঁ / কোনও সেটিংস টগল করার প্রয়োজন হয়, তবে কেউ উদাহরণস্বরূপ sed '/^PasswordAuthentication /{s/yes/no/;t;s/no/yes/}' -i /etc/ssh/sshd_configএটি করে এবং এটি ব্যবহার করতে পারে sed '/^PasswordAuthentication /{s/yes/no/;t;s/no/yes/}' -i /etc/ssh/sshd_config && grep '^PasswordAuthentication ' /etc/ssh/sshd_config && /etc/init.d/ssh reload
পিএফ

6

নির্বাচন করার জন্য অনেকগুলি বিকল্প রয়েছে:

  • পুতুল, সিফেনজিন, শেফ বা অন্য কোনও কনফিগারেশন পরিচালন সরঞ্জাম
  • অজিয়াস (আগস্টোল -> মুদ্রণ / ফাইল / ইত্যাদি / এসএসএস / এসএসডি_কনফিগ -> তারপরে "সেট" ব্যবহার করুন)
  • সেড -i
  • এবং আরো অনেক

আপনি কোথায় যেতে চান তা অনুমান করার চেষ্টা করার পরে, আপনি সম্ভবত যে কোনওভাবে কনফিগারেশন পরিচালনা ব্যবহার করে বিবেচনা করতে চান।


আপনি কি আমাকে ব্যবহার করে একটি উদাহরণ দিতে পারেন sed?
ব্রায়ান গ্রাহাম 22

3 টি সম্ভাব্য সমাধান দেওয়ার জন্য +1। এবং, @ ব্রায়ান গ্রাহাম এরফ ব্রায়ান কীভাবে অনুসন্ধান করবেন এবং সেডের সাথে প্রতিস্থাপন করবেন তা খুঁজে পাওয়া সত্যিই কঠিন নয়। sed -i 's / a / b /' aa (ফাইল 'a.a' তে 'b' এর পরিবর্তে 'a' কে প্রতিস্থাপন করে।
বার্লপ

4

Augeas - তার কমান্ড লাইন টুল দিয়ে augtool - কনফিগার করতে পারেন/etc/ssh/sshd_config। উদাহরণ স্বরূপ:

augtool --autosave 'set /files/etc/ssh/sshd_config/PasswordAuthentication yes'

সমস্ত মান ব্যবহার করতে:

SSHD_UsePAM=no
SSHD_UseDNS=no
augtool << EOF
set /files/etc/ssh/sshd_config/PermitRootLogin no
set /files/etc/ssh/sshd_config/ChallengeResponseAuthentication no
set /files/etc/ssh/sshd_config/PasswordAuthentication no
set /files/etc/ssh/sshd_config/UsePAM ${SSHD_UsePAM}
set /files/etc/ssh/sshd_config/UseDNS ${SSHD_UseDNS}
save
EOF

কেবল একটি নোট: ফাইলটিতে ম্যাচ ব্লক থাকলে এটি কাজ করবে না, কারণ প্রথম ম্যাচ ব্লকের আগে গ্লোবাল প্যারামিটারগুলি সন্নিবেশ করা দরকার।
ফিংক

@ Hফিংক, এটি কি অন্যান্য সমস্ত উত্তরের জন্যও প্রযোজ্য নয়? আপনি কি এর মতো একটি কনফিগারেশন ফাইল পেস্টবিন করতে পারেন?
ক্রিশ্চিয়ান সিউপিতু

ঐটা সত্য. আমি এর জন্য পুতুল + অজিয়াপ্রোভাডার ব্যবহার করে একটি উত্তর পোস্ট করব।
hফিংক

1

sshd_configসম্পূর্ণরূপে বিশ্লেষণ না করে নিরাপদে সম্পাদনা করা যায় না, কারণ এতে Matchব্লক থাকতে পারে ।

অজিজ এটি অর্জনের জন্য একটি ভাল বিকল্প, তবে Matchইতিমধ্যে যখন ব্লক রয়েছে তখন সঠিক জায়গায় সন্নিবেশকরণ বিকল্পগুলি পরিচালনা করা খুব সহজ নয় । একটি বিকল্প হ'ল sshd_configঅজিয়াজ-ভিত্তিক সরবরাহকারীর সাথে পুতুল ব্যবহার করা :

sshd_config { "PermitRootLogin":
  ensure => present,
  value  => "yes",
}

এই বিকল্পটি আপনাকে কঠোর পার্সার ( Sshd.lnsলেন্স সহ অউজিয়াস ) এবং অ্যাবস্ট্রাকশন স্তর (পুতুল সংস্থান) ব্যবহার করার সুবিধা দেয় যা Matchব্লকের বাইরে প্যারামিটার নির্ধারণের জটিলতা পরিচালনা করে তবে সেগুলির ভিতরেও :

sshd_config { "X11Forwarding":
  ensure    => present,
  condition => "Host foo User root",
  value     => "yes",
}

আপনি বিশ্বব্যাপী সেট করতে পারেন যদি আপনি পরীক্ষা দয়া করে PasswordAuthenticationকরতে noমধ্যে এইsshd_config ?
ক্রিশ্চিয়ান সিউপিতু

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