Comment connaître l'adresse IP d'un hôte auquel somename
je peux ssh
accéder? Si je fais nslookup
sur cet hôte, il dit "pas de réponse". Comment ssh
résoudre son nom alors?
Ni /etc/hosts
aucune .ssh/config
explication n'a fonctionné.
ÉDITER
Désolé somename
est pleinement qualifié.
ssh somename.somedomain
fonctionne, tandis que
ping somename.somedomain
et
nslookup somename.somedomain
ne pas
/etc/hosts
ou~/.ssh/config
?somename.local
..local
est un domaine spécial réservé au mDNS. Pour LLMNR, vous pouvez utiliser ce script NMAP.Réponses:
Nslookup est un programme pour interroger les serveurs de noms de domaine Internet . Nslookup est très bon pour interroger les serveurs DNS, mais il ne vous donne pas une image complète de la résolution de noms.
Sous Linux, la résolution des noms est le plus souvent contrôlée par NSS qui est configuré par
/etc/nsswitch.conf
. Plus précisément, cette configuration contient unehosts
entrée. Par exemple:Dans l'entrée ci-dessus, vous pouvez voir que la première chose à interroger est
files
suivie dedns
, ce qui signifie qu'elle/etc/hosts
sera interrogée avant DNS. D'autres options existent, notamment LDAP , DNS multidiffusion et WINS .En répondant directement à votre question, SSH résout le nom d'hôte en une adresse IP à l'aide de NSS (extraction des résultats de plusieurs sources) où nslookup interroge uniquement le DNS.
Vous pouvez vérifier quel IP NSS résout un nom d'hôte en utilisant getent. Par exemple pour résoudre
somename
:Aussi Dans le cas de SSH , vous pouvez configurer les informations spécifiques hôte
/etc/ssh/ssh_config
et~/.ssh/config
. Cela vous permettra même de spécifier une adresse IP pour un nom d'hôte, en ignorant entièrement la résolution de nom .:Ce qui suit indique à SSH d'utiliser
192.168.1.25
à la foisdev
etdev.example.com
. SSH utilisera cette adresse, que ces noms existent ou non comme noms DNS pour une IP différente:la source
Utilisez l'indicateur verbeux (
-v
) de lassh
commande:La sortie doit contenir, entre autres, une ligne qui montre l'IP résolu du serveur auquel vous vous connectez:
La cause la plus probable de
ssh
pouvoir résoudre un nom d'hôte quinslookup
ne peut pas est qu'il est configuré aussh
niveau.Par la
ssh_config(5)
page de manuel , il y a trois endroits où lesssh
fichiers de configuration sont recherchés:L'un de ces fichiers peut contenir votre nom d'hôte
somename
(ou un modèle qui lui correspond) comme alias d'un autre nom d'hôte ou IP. Par exemple:Veuillez vous référer aux
ssh_config(5)
explicationsHost
etHostName
directives de la page de manuel et à laPATTERNS
section pour plus d'informations.la source
ssh user@someserver
semble "résoudre" lesomeserver
nom DNS (même si cela ne se produit pas réellement). Si leHost someserver
est configuré dans un.ssh/config
fichier, il est alors possible d'utiliser la commande ssh exactement comme les états OP même si lesomeserver
n'est pas du tout dans le DNS.ssh -v somename
inclut l'adresse IP (quelles que soient lesssh_config
entrées). Ainsi, il répond directement à la question "Comment connaître l'adresse IP d'un certain nom d'hôte vers lequel je peux ssh?", Tout en étant une bonne première étape vers la réponse "Comment se peut-il que ce nom ssh fonctionne ...?".Philip est presque là, mais se dirige vers le
.ssh/config
trou du trou qu'il est peu probable que vous ayez configuré.Les commandes ...
... interroge NSS en utilisant la
hosts:
ligne de recherche dans/etc/nsswitch.conf
, plutôt que simplement DNS comme lenslookup
fait. Il est probable que votre environnement Unix utilise plusieurs services de nommage; éventuellement un type d'intégration AD.la source
host
fait normalement partie de bind-utils (ou équivalent) et comme les deuxnslookup
etdig
utilise uniquement DNS. OTOHgetent hosts
(ou peut-êtreahosts
) fait ce que vous décrivez.host
interroge d'autres services de noms. Convenu quigetent hosts
est la meilleure méthode sans ambiguïté pour interroger "tous les services de noms configurés".host
est uniquement DNS par les pages de manuel et confirmé par des tests sur les systèmes que j'utilise (CentOS, Ubuntu, FreeBSD, Solaris) ainsi qu'en amont . Voir aussi les (presque) dupes que j'ai commentés sur le Q qui disent aussi cela.