কী প্রত্যাখ্যান করা হলে উত্তরীয় ব্যবহারের পাসওয়ার্ড কীভাবে করবেন?


14

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

  • কী দিয়ে লগইন করার চেষ্টা করুন
  • কী দিয়ে লগইন করতে না পারলে:

    • পাসওয়ার্ড সহ লগইন করুন
    • অনুমোদিত_কিগুলিতে কী যুক্ত করুন
    • পাসওয়ার্ড সহ রুট লগইন অক্ষম করুন
    • usingচ্ছিকভাবে কী ব্যবহার করে পুনরায় সংযোগ করুন
  • অন্যান্য কাজগুলি করুন

আমি কীভাবে এটি সম্পাদন করতে পারি?

সম্পাদনা : পরিষ্কার করার জন্য, কী কী যোগ করতে বা রুট অক্ষম করতে হয় তা আমি জিজ্ঞাসা করছি না, এটি কেবল প্রসঙ্গের জন্য। আমি জিজ্ঞাসা করছি কীভাবে পাসওয়ার্ডে ফ্যালব্যাক করবেন যদি এটি কী দিয়ে প্রমাণীকরণ করতে না পারে। সহ --ask-passবা ansible_ssh_passসেট, উত্তরযোগ্য এমনকি সর্বজনীন কী প্রমাণীকরণ ব্যবহার করার চেষ্টা করবে না


ভাল প্রশ্ন, এতক্ষণ আপনি কী চেষ্টা করেছেন?
দাউদ

1
আমি এসএসএস কনফিগারেশনকে একটি পৃথক প্লেবুকে নিয়ে গিয়েছি এবং আমি -k বিকল্পের সাহায্যে এটি চালাচ্ছি, তারপরে আমি মূল-প্লেবুক -k ছাড়াই (এজেন্টের কী ব্যবহার করে) চালনা করি। আমি আশা করছিলাম এটি যদিও একটি একক
প্লেবুকের

@ পেট্র00 যখন আমার কাছে জিজ্ঞাসা-পাসওয়ার্ড কী-এর চেয়ে আলাদা ব্যবহারকারীর হয়ে থাকে তখন এটি কাজ করে (যেমন আপনি পাসওয়ার্ডযুক্ত এসএস অক্ষম করার পরে রিমোট ব্যবহারকারীকে স্যুইচ করার সময়)। যে সাহায্য করে যদি নিশ্চিত না।
ডিলান ইয়ং

উত্তর:


6

আপনি PreferredAuthenticationsবিকল্পটি চেষ্টা করে দেখতে পারেন এটি সেট করে publickey,password। ডিফল্টটিতে অন্যান্য বিকল্পগুলির সাথে এই ক্রমে এইগুলি অন্তর্ভুক্ত থাকে, সুতরাং উত্তরদাতাকে সম্ভবত এটি সেট করা হয়। এটির মাধ্যমে -oবা ক্লায়েন্টের মাধ্যমে এটি যুক্ত করা এড়াতে ssh_configপারে।

আপনি একটি মোড়ক স্ক্রিপ্ট ব্যবহার করতে সক্ষম হতে পারেন। উদাহরণস্বরূপ, এই সঙ্গে key_or_password.shএবং একটি pass.shযে পাসওয়ার্ড দেয়, চলমান bash key_or_password.sh root@hostএকটি publickey চেষ্টা করবে একটি অ-ইন্টারেক্টিভ পাসওয়ার্ড লগইন করে।

export DISPLAY=dummy:0
export SSH_ASKPASS=$PWD/pass.sh
exec setsid ssh -v -o 'PreferredAuthentications publickey,password' "$@"

লগটি নির্দেশ করে যে কোন পদ্ধতিতে সফল হয়েছে, যেমন

debug1: Authentication succeeded (publickey).

7

ansible_userপ্লেবুকের 'প্রথম রান' -র জন্য আলাদা হলে আমি কী করব (উদাহরণস্বরূপ যদি আপনার কেবলমাত্র একজন rootব্যবহারকারী থাকে এবং আপনি এসএসএইচ কী দিয়ে একটি নতুন ব্যবহারকারী সেটআপ করতে যাচ্ছেন):

  • আপনি ansible_passযেমন পাসওয়ার্ড লগইন (ভল্ট ব্যবহারের কথা মনে রাখবেন) ব্যবহার করছেন তবে পাসওয়ার্ডটি সংরক্ষণ করুন আপনি প্লেবুকের 'প্রথম রান' এর জন্য ব্যবহারকারীর পাসওয়ার্ড হওয়া উচিত be
  • সেট ansible_userব্যবহারকারী আপনাকে আপনি ব্যবহারকারীদের সার্ভারে সঠিকভাবে সেট আপ আছে প্রথমবার চালনার পর ব্যবহার করতে চান, ব্যবহারকারীর নাম রয়েছে।
  • ansible_user_first_runউদাহরণস্বরূপ, আপনি প্লেবুকের 'প্রথম রান' এর জন্য যে ব্যবহারকারীর ব্যবহার করতে চলেছেন তার একটি ভেরিয়েবল সেট করুন root
  • সঠিক, SSH কী দিয়ে সার্ভারে সংযোগ করতে ব্যবহার প্রচেষ্টা একটি স্থানীয় কমান্ডটি ব্যবহার করুন ignore_errorsএবংchanged_when: False
  • যদি এটি ব্যর্থ ansible_userহয় তবে এর মানটিতে আপডেট করুনansible_user_first_run

কোডটি এখানে:

---
- name: Check if connection is possible
  command: ssh -o User={{ ansible_user }} -o ConnectTimeout=10 -o PreferredAuthentications=publickey -o PubkeyAuthentication=yes {{ inventory_hostname }} echo "Worked"
  register: result
  connection: local
  ignore_errors: yes
  changed_when: False
- name: If no connection, change user_name
  connection: local
  set_fact:
    ansible_user: "{{ ansible_user_first_run }}"
  when: result|failed

দ্রষ্টব্য: transport = sshপ্যারামিকো অপ্রত্যাশিতভাবে কিছু কনফিগারেশনে সার্ভারে লগইন করতে ব্যর্থ হতে পারে (যেমন সার্ভারটি পাসওয়ার্ড গ্রহণ না করার জন্য সেট আপ করা হয়, এবং আপনি প্রথমে একটি পাসওয়ার্ড দিয়ে চেষ্টা করছেন ... অদ্ভুত!) এছাড়াও ssh পরিবহন দ্রুত, সুতরাং যাইহোক এটি এটি মূল্যবান।

আরও দ্রষ্টব্য: আপনি যদি এই পদ্ধতিটি ব্যবহার করে থাকেন তবে আপনাকে gather_facts: falseআপনার প্লেবুক সংজ্ঞা ফাইলটিতে উল্লেখ করতে হবে যাতে পাসওয়ার্ড পরীক্ষার পর্যায়ে যাওয়ার আগে সেটআপ / ফ্যাক্ট সংগ্রহের কাজগুলি স্বয়ংক্রিয়ভাবে চালিত না হয়। যদি আপনার কোনও উত্তরযোগ্য সত্যের প্রয়োজন হয় তবে আপনার যেমন স্পেসিফিকভাবে setupকোনও স্থানে পাওয়া যায় এমন ডেটা অ্যাক্সেস করার আগে আপনার ভূমিকাতে স্পষ্টভাবে কল করতে হবে ansible_devices। এটি করার একটি ভাল উপায় হল এমন setupএকটি whenদফা দিয়ে কল করা যা পরীক্ষা করে দেখুন কিনা আপনার ভূমিকাটি বলার আগে আপনি যে বিষয়টি ব্যবহার করছেন তা খালি বা না।


আপনার সমাধানটি ভাল তবে আপনি gather_facts: noপ্লেবুকটি চালু করার সময় সংযোগের চেষ্টা করার জন্য উত্তরদাতাকে আটকাতে হবে :)
k4cy

আপনি সঠিক. আমার সমস্ত প্লেবুকের জন্য আমার জমায়েত_ফ্যাক্টস সেট আছে যাতে আমাকে স্পষ্টভাবে 'সেটআপ' কল করতে হবে। আমি উত্তরে এটি উল্লেখ করতে ভুলে গেছি, আমি এখনই এটি আপডেট করব।
টম বুল

5

--ask-passউত্তর-প্লেবুক চালানোর সময় আপনি ব্যবহার করতে পারেন ।

আপনি জিজ্ঞাসা করা অন্যান্য কাজের জন্য, এটি বিভিন্ন উপায়ে যেমন কপির মডিউল দ্বারা অর্জনযোগ্য।
রুট লগইন অক্ষম করা যেমন করা যেতে পারে যেমন। টেম্পলেট করে sshd_confবা কনফাইশন ফাইলে লাইন byোকানোর মাধ্যমে ।


--ask-Pass (যা -k এর সমান) আমি যা করছি তা আমি উপরের মন্তব্যে লিখেছি
পেট্র00
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.