এটি কীভাবে হতে পারে যে ssh কিছু নাম কাজ করে, যখন এনএস লুকআপ কারও নাম নেই?


16

somenameআমি করতে পারি sshএমন কিছু হোস্টের আইপি ঠিকানা কীভাবে জানব ? আমি যদি nslookupএই হোস্টটিতে করি তবে এটি "উত্তর নেই" বলে। কীভাবে sshএর নামটি সমাধান করা যায়?


আমরাও /etc/hostsনা .ssh/configব্যাখ্যা করেন।


সম্পাদনা

দুঃখিত somenameসম্পূর্ণরূপে যোগ্য।

ssh somename.somedomain

কাজ করে, যখন

ping somename.somedomain

এবং

nslookup somename.somedomain

না


12
এটিতে তালিকাভুক্ত /etc/hostsনাকি ~/.ssh/config?
স্টিফেন কিট

1
নামটি এমডিএনএস (মাল্টিকাস্ট ডিএনএস) বা এলএলএমএনআর (লিংক-স্থানীয় বহুজাতিক নাম রেজোলিউশন) ব্যবহার করেও সমাধান করা যেতে পারে।
জোহান ম্যারেইন

এটি আপনার .ssh / কনফিগারেশন ফাইলে একটি এন্ট্রি থাকতে পারে
Tagwint

1
@Dims আপনি pinging চেষ্টা করে দেখতে পারেন somename.local.localএমডিএনএসের জন্য সংরক্ষিত একটি বিশেষ ডোমেন। এলএলএমএনআরের জন্য আপনি এই এনএমএপি স্ক্রিপ্টটি ব্যবহার করতে পারেন ।
জোহান ম্যারেইন

2
@ এমকেনজম না, এটি হবে না।
স্টিফেন কিট

উত্তর:


31

Nslookup ক্যোয়ারী ইন্টারনেটের ডোমেইন নাম সার্ভার থেকে একটি প্রোগ্রাম । ডিএনএস সার্ভারগুলি জিজ্ঞাসা করার জন্য এনস্ক্রুয়াক খুব ভাল তবে নামটির রেজোলিউশনের ক্ষেত্রে এটি আপনাকে পুরো চিত্র দেয় না।

লিনাক্স নেম রেজোলিউশনটি সাধারণত এনএসএস দ্বারা নিয়ন্ত্রিত হয় যা দ্বারা কনফিগার করা হয় /etc/nsswitch.conf। বিশেষত, এই কনফিগারেশনে একটি hostsএন্ট্রি রয়েছে । উদাহরণ স্বরূপ:

hosts:          files dns

উপরের এন্ট্রিতে আপনি দেখতে পাচ্ছেন যে প্রথম জিনিসটি জিজ্ঞাসা করা উচিত তার filesপরে dns, যার অর্থ /etc/hostsডিএনএসের আগে অনুসন্ধান করা হবে। এলডিএপি , মাল্টিকাস্ট ডিএনএস এবং ডাব্লুআইএনএস সহ অন্যান্য বিকল্প বিদ্যমান ।

আপনার প্রশ্নের সরাসরি জবাব দেওয়ার পরে, এসএসএইচ এনএসএস (একাধিক উত্স থেকে ফলাফল টানছে) ব্যবহার করে একটি আইপি ঠিকানায় হোস্টনামটি সমাধান করে যেখানে এনএসলুকআপ কেবল ডিএনএসকে জিজ্ঞাসা করে।

কোন আইপি এনএসএস জেন্ট ব্যবহারের জন্য হোস্টনামটি সমাধান করে তা দেখতে আপনি পরীক্ষা করতে পারেন। সমাধান করার জন্য উদাহরণস্বরূপ somename:

getent hosts somename

এছাড়াও এসএসএইচের ক্ষেত্রে আপনি /etc/ssh/ssh_configএবং তে হোস্টের নির্দিষ্ট তথ্য কনফিগার করতে পারেন ~/.ssh/config। এটি এমনকি আপনাকে কোনও হোস্টনামের জন্য একটি আইপি ঠিকানা নির্দিষ্ট করে, নাম রেজোলিউশনকে পুরোপুরি এড়িয়ে যাবে:

নিম্নলিখিত এসএসএইচ এবং 192.168.1.25উভয়ের জন্য ব্যবহার করতে বলে । এসএসএইচ এই ঠিকানাটি অন্য আইপি-র জন্য ডিএনএস নাম হিসাবে বিদ্যমান কিনা তা ব্যবহার করবে :devdev.example.com

# contents of $HOME/.ssh/config
Host dev dev.example.com
    HostName 192.168.1.25

10

somenameআমি করতে পারি sshএমন কিছু হোস্টের আইপি ঠিকানা কীভাবে জানব ?

কমান্ডের ভার্বোজ পতাকা ( -v) ব্যবহার করুন ssh:

ssh somename -v

আউটপুটটিতে অন্যান্য জিনিসের সাথে একটি লাইন থাকা উচিত যা আপনি যে সার্ভারে সংযোগ করছেন তার সমাধান করা আইপি দেখায়:

debug1: Connecting to aur.archlinux.org [5.9.250.164] port 22.

আমি যদি এই হোস্টটিতে এনস্লুআপ করি তবে এটি "উত্তর নেই" বলে। কীভাবে sshএর নামটি সমাধান করা যায়?

sshহোস্টনামটি সমাধান করতে সক্ষম হওয়ার সবচেয়ে সম্ভাব্য কারণ nslookupযা এটি sshস্তরে কনফিগার করা নেই ।

প্রতি ম্যানুয়েল পৃষ্ঠা সেখানে তিনটি স্থানে যেখানে কনফিগ ফাইলে এ দেখায়:ssh_config(5)ssh

  1. কমান্ড-লাইন বিকল্প
  2. ব্যবহারকারীর কনফিগারেশন ফাইল (~ / .ssh / config)
  3. সিস্টেম-ব্যাপী কনফিগারেশন ফাইল (/ etc / ssh / ssh_config)

এই ফাইলগুলির মধ্যে একটিতে আপনার হোস্টনাম somename(বা এটির সাথে মেলে এমন একটি প্যাটার্ন) অন্য হোস্টনাম বা আইপি-র একটি উপন্যাস হিসাবে থাকতে পারে । উদাহরণ স্বরূপ:

# explicit alias of somename to 8.8.8.8 IP
Host somename
    HostName 8.8.8.8

# pattern alias (that obviously matches somename) to another hostname
# that is itself resolved via DNS (and that can be nslookup-ed).
Host *
    HostName anotherhostname

আরও তথ্যের জন্য দয়া করে ssh_config(5)ম্যানুয়াল পৃষ্ঠা ব্যাখ্যা Hostএবং HostNameনির্দেশাবলী এবং PATTERNSবিভাগে পড়ুন।


এই উত্তরটি প্রশ্নের উত্তর দেয় না, এটি কোনও ডিএনএস সার্ভারের দ্বারা সার্ভার না থাকলেও কোনও হোস্টের নামটি কীভাবে স্বীকৃত তা ছিল।
জোহান ম্যারেইন

1
উত্তরে সঠিকভাবে খুব সম্ভবত সম্ভাব্য দৃশ্যের উল্লেখ রয়েছে যেখানে ssh user@someserverমনে হয় someserverডিএনএস নামটি "সমাধান" করে (যদিও এটি আসলে না ঘটে)। যদি ফাইলটিতে Host someserverকনফিগার .ssh/configকরা থাকে তবে ওপেন যেমনটি ডিএনএসে someserverনা থাকলেও ঠিক ঠিক তেমনই ssh কমান্ডটি ব্যবহার করা সম্ভব ।
ফিজিচ

2
@ জোহানমায়রিন আউটপুটটিতে ssh -v somenameআইপি ঠিকানা অন্তর্ভুক্ত রয়েছে (নির্বিশেষে কোনও ssh_configএন্ট্রি)। সুতরাং এটি সরাসরি "কীভাবে কিছু সংখ্যক হোস্টের আইপি ঠিকানাটি আমি জানতে পারি সে সম্পর্কে কীভাবে জানব?" পাশাপাশি উত্তর দেওয়ার দিকে একটি ভাল প্রথম পদক্ষেপ হিসাবে এটি কীভাবে হতে পারে "এই এসএসএস নামকরণ কীভাবে কাজ করতে পারে ...?"।
জিগ্লিনাগা

4

ফিলিপ প্রায় সেখানে, তবে .ssh/configরথোলটি নীচে নেমে আসে যা আপনার কনফিগার করা সম্ভব নয়।

আদেশগুলি ...

getent hosts somename

... এনএসএসকে কেবল ডিএনএসের মতো না করে লুকের hosts:লাইনটি ব্যবহার করে eries সম্ভবত আপনার ইউনিক্স পরিবেশ একাধিক নামকরণ পরিষেবা ব্যবহার করছে; সম্ভবত কিছু সংস্থার সংহতকরণ।/etc/nsswitch.confnslookup


3
আমি বলব না যে আমি সেই পথে নামলাম। আমি সম্পূর্ণতার জন্য একটি "এছাড়াও" যুক্ত করেছি।
ফিলিপ কুলিং

@ ফিলিপ কাউলিং শিওর, তবে আপনার "প্রাক-এছাড়াও" অসম্পূর্ণ - প্রশ্নটি যখন "vers জিনিস বনাম এনস্লুকআপ" সম্পর্কে হয় তখন আপনি কীভাবে নির্বিচারে কোনও নাম সমাধান করবেন তা আপনি প্রদর্শন করছেন না।
ধনী

3
ইতিমধ্যে কিউ-তে মন্তব্য করা হয়েছে, hostসাধারণত বাঁধাই-ব্যবহার (বা সমমানের) অংশ এবং এটি উভয়েরই মতো nslookupএবং digকেবল ডিএনএস ব্যবহার করে। OTOH getent hosts(বা সম্ভবত ahosts) আপনি যা বর্ণনা করেছেন তা করে।
ডেভ_থমপসন_0৮৮

@ dave_thompson_085 ভুল। hostঅন্যান্য নাম পরিষেবাদি অনুসন্ধান করে। getent hosts"যে কোনও কনফিগার করা নাম পরিষেবাদি" ক্যোয়ারির জন্য সেরা দ্ব্যর্থহীন পদ্ধতি এটি সম্মত ।
সমৃদ্ধ

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