SSH: hôte connu avec adresse dynamique

12

Je dois me connecter à un hôte avec une adresse IP dynamique.

Chaque fois que son IP change, SSH m'invite à valider les empreintes digitales:

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

Serait-il possible de passer SSH la clé publique hôte, de sorte que:

  1. SSH valide automatiquement l'authenticité de l'hôte
  2. La clé d'hôte n'est pas stockée dans le fichier known_hosts

Cette question diffère de Comment puis-je éviter la vérification d'hôte SSH pour les hôtes connus? depuis que d' autres questions vise à réprimer la validation de SSH, alors que je ne pas envie de le supprimer: Je ne veux avoir l'hôte authentifié, tout en utilisant la clé publique de l'hôte (que je connais, et l' ont stocké dans un fichier) plutôt que SSH known_hostsfichier.

Pour moi, l'autre question semble être de se connecter à un serveur différent à chaque fois, plutôt que de se connecter à un seul serveur bien connu avec une adresse IP dynamique.

peoro
la source

Réponses:

8

La meilleure solution (c'est-à-dire la plus proche de ce que je veux) que je pourrais trouver est d'utiliser l'option HostKeyAlias: il utilisera un nom d'hôte que je spécifie pour accéder known_hosts(plutôt que l'IP auquel je me connecte).

Je devrai ajouter la clé publique de l'hôte pour known_hostsutiliser un nom d'hôte donné (par exemple:) myhostet puis me connecter à lui en utilisant:

ssh -o 'HostKeyAlias myhost' ...
peoro
la source
Je sais que cela fait un moment, mais: si cela répond le mieux à votre question, veuillez l'accepter.
kittykittybangbang
Remarque pour les autres: vous pouvez ajouter la HostKeyAliasvaleur de configuration à votre ~/.ssh/configfichier ou même au /etc/ssh/ssh_configfichier global .
kael
6

Le known_hostsfichier n'est pas seulement la clé, il contient également le nom d'hôte que vous utilisez pour vous connecter, et si possible l'IP qui correspond. C'est pourquoi vous voyez l'erreur, c'est la comparaison du triplet qu'il obtient du serveur avec ce que vous avez stocké dans le fichier known_hosts.

Donc, si l'IP continue de changer, vous pouvez désactiver CheckHostIPet cela signifie qu'il vérifiera simplement le nom d'hôte et la clé d'hôte. Si ceux-ci restent inchangés, vous devriez avoir moins de plaintes, mais vous serez à risque si quelqu'un détourne votre DNS.

NickW
la source
1
Merci pour la réponse, je vais la tester dès que possible! Pourquoi serait-il au contraire de toute façon? Si je connais la clé publique SSH d'un hôte, cela devrait être suffisant pour être totalement sûr dans tous les cas (à moins que quelqu'un n'arrive à voler la clé privée de cet hôte), n'est-ce pas?
peoro
Et je n'aime pas vraiment ça si je dois être honnête. L'utilisation de cet indicateur SSH aura toujours accès known_hosts. Pourquoi? Je ne peux pas dire "ssh connect to X dont la clé publique est Y"? Pourquoi pas? Ce ne serait pas sûr à 100%.
peoro
L'idée est que la clé d'hôte fait partie d'un ensemble plus large et que cela ne suffit pas à lui seul pour garantir que le serveur auquel vous vous connectez est toujours celui auquel vous vous êtes connecté précédemment. Vous devez vous assurer que les entrées IP et DNS correspondent également .. rappelez-vous, il s'agit d'un shell basé sur le réseau, donc le réseau doit également être vérifié.
NickW