2009-04-09 17 views
14

J'ai 2 serveurs ssh derrière un pare-feu nat à un endroit qui change son adresse IP wan tous les jours. Ils sont toujours à la même adresse IP wan à un moment donné mais sur des ports différents.Comment gérer la vérification des clés de l'hôte ssh avec 2 hôtes différents sur la même adresse IP (mais en changeant)?

Je me connecte au serveur A cette façon:

ssh -p 22001 [email protected] 

et au serveur B:

ssh -p 22002 [email protected] 

Je reçois 2 différentes clés d'hôte pour la même adresse IP, et également lorsque les changements IP même une adresse IP différente pour le même hôte.

Je dois continuer à supprimer plusieurs fois l'autre clé ou l'ancienne clé (en cas de changement d'adresse IP) dans le fichier known_hosts. J'hésite à désactiver la vérification des clés, car cela serait moins sûr. Mais obtenir un avertissement tout le temps est également non sécurisé (parce que j'ignore de tels avertissements tout le temps alors). Y a-t-il une meilleure solution?

Ceci est lié à ma vieille question ici, mais pas le même:

SSH login warning message on a server with 2 DNS names

+0

pourquoi cette fermée au lieu de passer à [SuperUser] (https : //superuser.com/) ou [Unix et Linux] (https://unix.stackexchange.com/)? –

Répondre

32

Je pense que cela va fonctionner:

Créer un fichier config dans votre répertoire .ssh comme suit:

Host server1 
    Hostname x1.example.com 
    HostKeyAlias server1 
    CheckHostIP no 
    Port 22001 
    User karl 

Host server2 
    Hostname x2.example.com 
    HostKeyAlias server2 
    CheckHostIP no 
    Port 22002 
    User karl 

Explication ci-dessous (à partir de man ssh_config)

CheckHostIP

Si ce drapeau est réglé sur "oui", ssh (1) va en outre vérifier l'adresse IP de l'hôte dans le fichier known_hosts . Cela permet à ssh de détecter si une clé d'hôte a été modifiée en raison d'une usurpation DNS. Si l'option est réglée sur "non", la vérification ne sera pas exécutée. Le par défaut est "oui".

HostKeyAlias ​​

Indique un alias qui doit être utilisé à la place du réel nom d'hôte lors de la recherche ou de sauvegarder la clé d'hôte dans les fichiers de base de données clés d'accueil . Cette option est utile pour le tunneling des connexions SSH ou pour plusieurs serveurs s'exécutant sur un seul hôte.

Le Username et Port ligne vous évite d'avoir à donner ces options sur la ligne de commande, aussi, donc vous pouvez simplement utiliser:

% ssh server1 
% ssh server2 
+0

C'est trop cool! Fonctionne très bien, merci! – user89021

+1

Je me demandais juste: est-il possible de stocker ssh le port IP et le port dans known_hosts?IIUC, cela permettrait une certaine protection contre l'usurpation DNS, non? – Hbf

+1

@Hbf sur mon système MacOS X le port (s'il n'est pas standard) _is_ est stocké dans 'known_hosts'. – Alnitak