web-dev-qa-db-fra.com

Comment rendre SSH Match connais_hosts à hoster / IP: port au lieu d'accueil / IP?

J'ai deux machines derrière un pare-feu, les ports SSH transmis à 2201 et 2202.

Quand je

ssh Host -p 2201  

il demande si je fais confiance à la machine, je dis oui, il est ajouté à ~/.ssh/connais_hosts

Alors je

ssh Host -p 2202  

Cela ne me laisse pas, car il y a déjà une entrée pour cette adresse IP dans ~/.ssh/known_Host:1 (le fichier était vide quand j'ai commencé, alors la ligne 1 est celle ajoutée par la précédente exécution SSH).

Cela se produit sur Centos 5.4.

Sur d'autres distributions (j'ai essayé arc), il apparaît que SSH correspond également aux ports connus. Je peux donc avoir plusieurs empreintes digitales pour plusieurs ports sur le même hôte/IP sans aucun problème.

Comment puis-je obtenir ce même comportement pour Centos?

Je n'ai rien trouvé dans man ssh_config (ou du moins pas sans désactiver la vérification des empreintes digitales).

J'ai trouvé une solution temporaire. Si la known_hosts Le fichier a plus d'une entrée pour la même adresse IP, il vérifiera tous avant de conclure que quelque chose ne va pas. Mais je détesterais vraiment que cela soit la solution.

7
Prody

Utilisez ceci si votre client OpenSSH ne prend pas en charge les entrées d'hôte + basées sur le port:

La directive 'globalknownhostsfile' peut être mal utilisé pour pointer vers un fichier différent pour chacune de vos 2 machines pare-feu (ici Alice et Bob). Cependant, ces deux fichiers doivent être préparés avec des touches hôtes correctes d'Alice ou Bob à l'avance, car elles ne sont pas écrites lors de l'acceptation des clés inconnues.

Ce n'est pas vraiment amusant de mettre en place mais une fois que cela est fait, ça marche.

Mon contournement précédent avant que cela ait été "StricthostKeyChecking NO" qui n'autorise pas SSH-Agent de transférer les clés ni d'avoir des ports transférés (bloqués par OpenSSH lorsqu'ils sont utilisés).

Mon .ssh/config ressemblait à ceci jusqu'à récemment:

Host hoppingstation
        Hostname loginhost.somewhere.net
        User me
        LocalForward 2201 alice.somewhere.net:22
        LocalForward 2202 bob.somewhere.net:22
Host alice
        Hostname localhost
        Port 2201
        User root
        ForwardAgent yes
        GlobalKnownHostsFile /home/me/.ssh/known_hosts_alice
Host bob
        Hostname localhost
        Port 2202
        User root
        ForwardAgent yes
        GlobalKnownHostsFile /home/me/.ssh/known_hosts_bob
4
chris

ma solution; Ajouter des informations détaillées sur l'hôte à ~/.ssh/config:

Host <someidentifier>
    Hostname ip.add.re.ss
    StrictHostKeyChecking no
    User username
    Port 2201

Host <someotheridentifier>
    Hostname ip.add.re.ss
    StrictHostKeyChecking no
    User username
    Port 2202

ensuite, vous pouvez faire ssh someidentifier Sans même avoir à fournir -p etc.

1
cpbills