প্রশ্ন আমি স্বয়ংক্রিয়ভাবে পরিচিত_হস্টগুলিতে একটি নতুন হোস্ট যোগ করতে পারি?


এখানে আমার পরিস্থিতি: আমি একটি পরীক্ষা জোড়ার সেট আপ করছি যা একটি কেন্দ্রীয় ক্লায়েন্ট থেকে, ভার্চুয়াল মেশিন ইনস্ট্যান্সগুলির একটি সংখ্যা চালু করবে এবং তারপরে তাদের মাধ্যমে কমান্ডগুলি চালানো হবে ssh। ভার্চুয়াল মেশিন পূর্বে অব্যবহৃত হোস্টনাম এবং আইপি ঠিকানা আছে, তাই তারা হবে না ~/.ssh/known_hosts কেন্দ্রীয় ক্লায়েন্ট ফাইল।

আমি যে সমস্যাটি করছি তা হল প্রথম ssh একটি নতুন ভার্চুয়াল ইনস্ট্যান্সের বিরুদ্ধে কমান্ড রান সর্বদা একটি ইন্টারেক্টিভ প্রম্পট দিয়ে আসে:

The authenticity of host '[hostname] ([IP address])' can't be established.
RSA key fingerprint is [key fingerprint].
Are you sure you want to continue connecting (yes/no)?

একটি উপায় আছে যা আমি এটিকে বাইপাস করতে পারি এবং নতুন হোস্টটি ইতিমধ্যে ক্লায়েন্ট মেশিনে পরিচিত হওয়ার জন্য পেতে পারি, সম্ভবত একটি সর্বজনীন কী ব্যবহার করে যা ইতিমধ্যে ভার্চুয়াল মেশিন ইমেজটিতে বেকড হয়ে আছে? আমি এক্সপেক্ট ব্যবহার করতে পারব না বা ইন্টারেক্টিভ প্রম্পট উত্তর দিতে পারব না।


217
2018-04-16 04:15


উত্স


স্বনির্ভর এবং শারীরিকভাবে সুরক্ষিত একটি পরীক্ষামূলক পরিবেশের জন্য, স্বয়ংক্রিয় কী স্বীকৃতি ঠিক সূক্ষ্ম কাজ করতে পারে। কিন্তু স্বয়ংক্রিয়ভাবে উৎপাদন পরিবেশে বা অবিশ্বাস্য নেটওয়ার্কের (যেমন ইন্টারনেট হিসাবে) সর্বজনীন কীগুলি গ্রহণ করে এসএসএইচ অন্যথায় সামর্থ্য দেবে এমন মধ্য-মাঝারি আক্রমণগুলির বিরুদ্ধে সম্পূর্ণ সুরক্ষা দেয়। দ্য কেবল MITM আক্রমণের বিরুদ্ধে আপনি সুরক্ষিত কিনা তা নিশ্চিত করার জন্য বৈধ উপায় হল আউট অফ ব্যান্ড বিশ্বস্ত চ্যানেলের মাধ্যমে হোস্টের সর্বজনীন কী যাচাই করা। একটি মাঝারি জটিল কী সাইন ইনফ্রারেটিং সেট আপ ছাড়া এটি স্বয়ংক্রিয়ভাবে কোন নিরাপদ উপায় নেই। - Eil


উত্তর:


স্থির কর StrictHostKeyChecking বিকল্প no, কনফিগারেশন ফাইল বা মাধ্যমে -o :

ssh -o StrictHostKeyChecking=no username@hostname.com


126
2018-04-16 04:34



এই আপনি মধ্যম আক্রমণ মানুষের কাছে খোলা পাতা, সম্ভবত একটি ভাল ধারণা না। - JasperWallace
@ জ্যাসপারওয়ালেস, যদিও এটি সাধারণত ভাল পরামর্শ, নির্দিষ্ট ব্যবহার ক্ষেত্রে (পরীক্ষা VM এবং স্থাপন কমান্ডগুলি প্রেরণ করা) যথেষ্ট নিরাপদ হওয়া উচিত। - Massimo
এটি একটি দেয় Warning: Permanently added 'hostname,1.2.3.4' (RSA) to the list of known hosts.সতর্কতা এড়ানোর জন্য, এবং যে কোনও পরিচিত_হস্টস ফাইলটিতে যোগ করা এন্ট্রি এড়ানোর জন্য, আমি করি: ssh -o StrictHostKeyChecking=no -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null username@hostname.com - Peter V. Mørch
এটি ডাউনভোটিং হিসাবে এই প্রশ্নের উত্তর দেয় না এবং গুরুতর নিরাপত্তা দুর্বলতার দিকে প্রর্দশিত হয়। - marcv81
@ মেনবার্চুঃ আপনি যদি নিরাপত্তার ব্যাপারে চিন্তিত হন তবে এই প্রশ্নের সাথে আপনার কোনও সম্পর্ক নেই। আপনি যে সিস্টেমটি সংযুক্ত করতে চান সেটির কনসোল থেকে সংগৃহীত আপনার সামনে আপনার সঠিক হোস্ট কী থাকবে, এবং আপনি নিজে প্রথম সংযোগে এটি যাচাই করে নেবেন। আপনি অবশ্যই "স্বয়ংক্রিয়ভাবে" কিছু করতে হবে না। - Ignacio Vazquez-Abrams


আইএমও, এটি করার সেরা উপায় হল নিম্নলিখিত:

ssh-keygen -R [hostname]
ssh-keygen -R [ip_address]
ssh-keygen -R [hostname],[ip_address]
ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [hostname] >> ~/.ssh/known_hosts

এটি নিশ্চিত করবে যে কোন সদৃশ এন্ট্রি নেই, যা আপনি হোস্টনাম এবং আইপি উভয়ের জন্য আচ্ছাদিত, এবং আউটপুট, একটি অতিরিক্ত নিরাপত্তা পরিমাপ হাশ করবে।


210
2017-09-27 20:51



কেন আপনি সব 3 ssh-keycan এর প্রয়োজন? হোস্টনাম এবং আইপি উভয় ক্ষেত্রেই এটি কাজ করে যেহেতু আপনি প্রথমটি দিয়ে এটি পেতে পারবেন না? - Robert
আপনি কি নিশ্চিত যে ssh-keyscan অনুরোধের জন্য মেশিনটি সত্যিই উত্তর দিতে চান? যদি আপনি মাঝের আক্রমণে একজনকে নিজের কাছে না খুলেন। - JasperWallace
@ জ্যাসপারওয়ালাস হ্যাঁ, এর জন্য আপনাকে কমপক্ষে আঙ্গুলের ছাপ বা এমনকি জনসাধারণের কী দরকার, এই ক্ষেত্রে আপনি সরাসরি এটি পরিচিতিগুলিতে যোগ করতে পারেন, এই প্রশ্নটি জাগ্রত করুন। আপনার যদি শুধুমাত্র ফিঙ্গারপ্রিন্ট থাকে, তবে আপনাকে একটি অতিরিক্ত পদক্ষেপ লিখতে হবে যা আপনার আঙ্গুলের ছাপ দিয়ে ডাউনলোড করা পাবলিক কী যাচাই করে ...
কল ssh-keyscan আমার জন্য ব্যর্থ হয়েছে কারণ আমার লক্ষ্য হোস্ট ডিফল্ট সংস্করণ 1 কী ধরনের সমর্থন করে না। যোগ করার পদ্ধতি -t rsa,dsa কমান্ড এই সংশোধন করা হয়েছে। - phasetwenty
এটি সম্ভবত একটি খারাপ ধারণা। আপনি এই কীগুলি আপডেট করে একটি ম্যান-ইন-দ্য মিডল আক্রমনের জন্য নিজেকে খুলেছেন। ডুপ্লিকেট এন্ট্রি এড়াতে, এর রিটার্ন অবস্থা চেক করুন ssh-keygen -F [address] পরিবর্তে. medium.com/@wblankenship/... - retrohacker


অলস ব্যক্তিদের জন্য:

ssh-keyscan <host> >> ~/.ssh/known_hosts

80
2017-09-25 10:03



অভিযুক্ত হিসাবে দোষী জন্য +1। ধন্যবাদ। - SaxDaddy
এমআইটিএম হামলার ঝুঁকিপূর্ণ। আপনি কী আঙ্গুলের ছাপ পরীক্ষা করছি না। - Mnebuerquo
@ মেনবার্চেও আপনি কী করবেন তা বলুন কিন্তু কীভাবে, যা সহায়ক হবে। - Jim
@ জেমসফিশার হ্যাঁ এটি এমআইটিএম আক্রমণের পক্ষে দুর্বল, কিন্তু আপনি কি কখনও RSA ফিঙ্গারপ্রিন্টটি তুলনা করেছেন, যা আপনাকে সার্ভারের প্রকৃত এক সাথে দেখানো হয়েছিল, যখন আপনি নিজে এটি করছেন? কোন? তাই এই উত্তরটি আপনার জন্য এটি করার উপায়। হ্যাঁ, আপনি এই উত্তরটি ব্যবহার করবেন না এবং নিজে নিজে এটি করবেন না বা অন্যান্য নিরাপত্তা ব্যবস্থা বাস্তবায়ন করবেন না ... - fivef
@ মেনবার্চুও যদি আপনি এটি পরিচালনা করার জন্য একটি ভাল উপায় সম্পর্কে আমাদের জানান তবে আমরা সত্যিই আনন্দিত হব, যখন আমাদের ব্যথ স্ক্রিপ্টগুলি ব্যবহার না করে একটি রেপো ক্লোন করতে হবে এবং আমরা এই প্রম্পটটি পাস করতে চাই। যদি আপনি মনে করেন এটি সঠিক নয় তবে একটি বাস্তব সমাধানটিতে কিছু আলোকপাত করুন! - Waqas Shah


যেমন উল্লেখ করা হয়েছে, কী-স্ক্যান ব্যবহার করে এটি করা ঠিক ও অকার্যকর উপায়।

ssh-keyscan -t rsa,dsa HOST 2>&1 | sort -u - ~/.ssh/known_hosts > ~/.ssh/tmp_hosts
mv ~/.ssh/tmp_hosts ~/.ssh/known_hosts

উপরে একটি হোস্ট যোগ করার জন্য কৌশলটি ব্যবহার করা হবে, কেবলমাত্র এটি এখনো যোগ করা হয়নি। এটি একযোগে নিরাপদ নয়; আপনি না অবশ্যই একসাথে একই মূল মেশিনে স্নিপেটটি একবারে চালান, কারণ tmp_hosts ফাইল আটকানো যেতে পারে, অবশেষে known_hosts ফাইলটি ফুলে উঠছে ...


38
2018-03-06 09:00



কি key_hosts মধ্যে কিনা তা পরীক্ষা করার একটি উপায় আছে আগে  ssh-keyscan? কারণ এটি কিছু সময় এবং অতিরিক্ত নেটওয়ার্ক সংযোগ প্রয়োজন। - utapyngo
এই ফাইলটির মূল পোস্টার সংস্করণটি ছিল cat ~/.ssh/tmp_hosts > ~/.ssh/known_hosts, কিন্তু একটি পরবর্তী সম্পাদনা এটি পরিবর্তন >>। ব্যবহার >> একটি ত্রুটি। এটি প্রথম লাইনের অনন্যতার উদ্দেশ্যকে পরাজিত করে এবং এতে নতুন এন্ট্রিগুলিকে ডাম্প করে দেয় known_hosts প্রত্যেক সময় এটি রান। (শুধু এটি পরিবর্তন করতে একটি সম্পাদনা পোস্ট করুন।) - paulmelnikow
এটি অন্যের মতো একই এমআইটিএম আক্রমণের বিষয়। - Mnebuerquo
@utapyngo ssh-keygen -F আপনাকে বর্তমান ফিঙ্গারপ্রিন্ট দেবে। যদি এটি 1 এর রিটার্ন কোড সহ ফাঁকা ফিরে আসে তবে আপনার কাছে এটি নেই। এটি যদি কিছু মুদ্রণ করে এবং কোডটি 0 প্রদান করে তবে এটি ইতিমধ্যে উপস্থিত। - Rich L
আপনি যদি এমআইটিএম সম্পর্কে খুব বেশি যত্নশীল হন তবে DNSSEC এবং SSHFP রেকর্ডগুলি স্থাপন করুন বা কীগুলি বিতরণের কিছু নিরাপদ উপায় ব্যবহার করুন এবং এই ক্লুজ সমাধানটি অপ্রাসঙ্গিক হবে। - Zart


আপনি ব্যবহার করতে পারেন ssh-keyscan পাবলিক কী দখল কমান্ড এবং আপনার যে যোগ করুন known_hosts ফাইল।


18
2018-04-16 05:09



নিশ্চিত করুন যে আপনি সঠিক কীটি নিশ্চিত করতে আঙ্গুলের ছাপ পরীক্ষা করুন। অন্যথায় আপনি নিজেকে এমআইটিএম আক্রমণের জন্য খুলুন। - Mnebuerquo
@ মেনবার্চেও ফেয়ার পয়েন্ট সাধারণ প্রেক্ষাপটে, তবে কেন কেউ যদি প্রোগ্রামটি কীভাবে সঠিক কী কী জানত তা জানার চেষ্টা করে তবে কীভাবে কীগুলি সংগ্রহ করতে চেষ্টা করবে? - Brian Cline
এটা করার উপায় নেই। MITM। - jameshfisher


এই আপনি অন্তর্ভুক্ত করতে পারেন কিভাবে SSH-keyscan আপনার খেলার মধ্যে:

---
# ansible playbook that adds ssh fingerprints to known_hosts
- hosts: all
  connection: local
  gather_facts: no
  tasks:
  - command: /usr/bin/ssh-keyscan -T 10 {{ ansible_host }}
    register: keyscan
  - lineinfile: name=~/.ssh/known_hosts create=yes line={{ item }}
    with_items: '{{ keyscan.stdout_lines }}'

6
2018-02-03 03:12



আপনি কি একটি পরিচিত বৈধ known_hosts ফাইল আপলোড করছেন, অথবা আপনি ssh-keyscan করছেন এবং আউটপুটগুলিকে আঙ্গুলের ছাপ যাচাই না করে আউটপুট_হস্টগুলিতে ডাম্প করছেন? - Mnebuerquo
এটি সহজভাবে একটি keycan এর আউটপুট dumps হয়, হ্যাঁ। সুতরাং কার্যত এটি স্ট্রিকহস্ট কেইচেকিং = না হিসাবেই, নিঃশব্দ পরিচিত_হস্টগুলি ssh বিকল্পগুলির সাথে fiddling ছাড়া আপডেট করা হয়। Ssh-keyscan একাধিক লাইন ফেরত দেওয়ার কারণে এই সমাধানটিও ভালভাবে কাজ করে না যা এই টাস্ককে সর্বদা 'পরিবর্তিত' হিসাবে পতাকাঙ্কিত করে। - Zart
এটা করার উপায় নেই। MITM। - jameshfisher
@ জেমসফিশার আমি সত্যিই আনন্দিত হব যদি আপনি আমাদের এটি পরিচালনা করার জন্য আরও ভাল উপায় জানতে দেন, যখন আমরা ব্যথ স্ক্রিপ্টগুলি ব্যবহার না করে একটি রেপো ক্লোন করতে চাই এবং আমরা এই প্রম্পটটি পাস করতে চাই। যদি আপনি মনে করেন এটি সঠিক নয় তবে একটি বাস্তব সমাধানটিতে কিছু আলোকপাত করুন! দয়া করে আমাদের জানান "কিভাবে" এটি করতে হবে, যদি আপনি মনে করেন এটি করার সঠিক উপায় নয়! - Waqas Shah


আমারও অনুরূপ সমস্যা ছিল এবং পাওয়া কিছু উত্তর আমাকে কেবল স্বয়ংক্রিয় সমাধানতে অংশগ্রহন করে। আমি ব্যবহার শেষ পর্যন্ত নিম্নলিখিত, এটি সাহায্য করে আশা করি:

ssh -o "StrictHostKeyChecking no" -o PasswordAuthentication=no 10.x.x.x

এটা কী যোগ করে known_hosts এবং পাসওয়ার্ড জন্য প্রম্পট না।


5
2017-10-21 17:27



এমআইটিএম হামলার ঝুঁকিপূর্ণ। আপনি আঙ্গুলের ছাপ চেক করা হয় না। - Mnebuerquo
কেউ আঙ্গুলের ছাপ পরীক্ষা করে না। - Brendan Byrd
এটা করার উপায় নেই। MITM। - jameshfisher


এটি সম্পূর্ণ সমাধান হবে, শুধুমাত্র প্রথমবার হোস্ট কীটি গ্রহণ করবে

#!/usr/bin/env ansible-playbook
---
- name: accept ssh fingerprint automatically for the first time
  hosts: all
  connection: local
  gather_facts: False

  tasks:
    - name: "check if known_hosts contains server's fingerprint"
      command: ssh-keygen -F {{ inventory_hostname }}
      register: keygen
      failed_when: keygen.stderr != ''
      changed_when: False

    - name: fetch remote ssh key
      command: ssh-keyscan -T5 {{ inventory_hostname }}
      register: keyscan
      failed_when: keyscan.rc != 0 or keyscan.stdout == ''
      changed_when: False
      when: keygen.rc == 1

    - name: add ssh-key to local known_hosts
      lineinfile:
        name: ~/.ssh/known_hosts
        create: yes
        line: "{{ item }}"
      when: keygen.rc == 1
      with_items: '{{ keyscan.stdout_lines|default([]) }}'

5
2017-11-23 13:51



এটা করার উপায় নেই। MITM। - jameshfisher