SSH known_hosts avec une IP dynamic

J'ai une machine derrière un pare-feu. Je me connecte à distance à l'aide d'un tunning VPN avec un port vers l'avant via ssh. Pour se connecter à la machine, j'utilise l'adresse IP externe du VPN et mon port personnel et temporaire. La command que j'utilise est:

ssh USER@VPN_IP -p PORT 

Étant donné que VPN_IP et PORT changent fréquemment, je ne peux pas avoir l'avantage de sauvegarder la key d'hôte dans known_host pour éliminer les attaques man man-in-the-middle, mais en même time, la key hôte est bien connue pour moi et je pourrais le fournir ssh pour l'utiliser pour la combinaison VPN_IP et PORT actuelle. Est-ce possible? Comment?

2 Solutions collect form web for “SSH known_hosts avec une IP dynamic”

Le file known_hosts sert à fournir ces keys et il n'y a pas d'alternative de command line directe (et ce ne serait pas si pratique). Cependant, votre objective est complètement possible avec le file known_hosts !

Lisez le format de file ssh_known_hosts man sshd .

Lors de l'authentification hôte, l'authentification est acceptée si une ligne correspondante possède la key appropriée; soit celui qui correspond exactement, soit si le server a présenté un certificate d'authentification, la key de l'autorité de certificateion qui a signé le certificate.

Il est possible d'utiliser des caractères generics dans ~/.ssh/known_hosts (et /etc/ssh/ssh_known_hosts ):

Chaque ligne de ces files contient les champs suivants: marqueurs (facultatif), noms d'hôte, keytype, key codée base64, commentaire. Les champs sont séparés par des espaces.

Hostnames est une list de motifs séparés par des virgules ( * et ? agissent comme des caractères generics"); chaque model à son tour est adapté au nom d'hôte canonique (lors de l'authentification d'un client) ou au nom fourni par l'user (lors de l'authentification d'un server). Un model peut également être précédé par ! pour indiquer la négation: si le nom d'hôte correspond à un motif négatif, il n'est pas accepté (par cette ligne), même s'il correspond à un autre motif sur la ligne. Un nom d'hôte ou une adresse peut éventuellement être inclus dans [ et ] parenthèses suivis de ':' et un numéro de port non standard.

Il est possible de faire confiance à une key

  • une gamme de réseau, si elle est connue, par exemple pour TEST-NET-2 :

     198.51.100.* ssh-rsa AAAAB3Nza...2iQ== 
  • gammes multiples (p. ex. tout TEST-NET s) en utilisant une list séparée par des virgules:

     192.0.2.*,198.51.100.*,203.0.113.* ssh-rsa AAAAB3Nza...2iQ== 
  • ou même lors de la connection n'importe où:

     * ssh-rsa AAAAB3Nza...2iQ== 

Si cette key n'est pas présente, elle vous avertit toujours de l'authenticité des autres keys, affiche l'empreinte digitale et ajoutez-la automatiquement si vous répondez yes . La comparaison est effectuée ligne par ligne.

En utilisant la réponse utile d'Esa Jokinen et en automatisant le process ici, ma solution:

 #!/bin/sh previous_IP_OR_known_host_key_line=$1 current_IP=$2 user=$3 port=$4 #random extension to avoid collision by multiple script execution temp_file="/tmp/temp_host_file.$(hexdump -n 2 -e '/2 "%u"' /dev/urandom)" if [ "$(echo "$previous_IP_OR_known_host_key_line"|wc -w)" -gt 1 ]; then echo "$previous_IP_OR_known_host_key_line"|sed "s/^[^ ]*/$current_IP/">"$temp_file" else ssh-keygen -F "$previous_IP_OR_known_host_key_line"|grep -v "^#"|sed "s/^[^ ]*/$current_IP/">"$temp_file" fi ssh "$user"@"$current_IP" -p "$port" -o UserKnownHostsFile="$temp_file" rm "$temp_file" 

Le script génère un file temporaire connu pour fournir à ssh. Le script nécessite le paramètre suivant (suivant la command):

– l'IP de destination que la machine avait dans les connections acceptées précédentes OU la ligne RAW correspondante avec la key du file known_host.

-le IP actuelle (derrière le VPN / pare-feu).

-l'user.

-Le port.

  • Autorisations de réseau IP / Port spécifiques à l'user pour Open VPN
  • VPN (sur OS X 10.4.11) - derrière deux pare-feu
  • L'hôte de virtualisation devrait-il pouvoir exécuter n'importe quel service?
  • Qu'est-ce que XTSAC.cab et est-il sûr de charger?
  • Impossible de faire un ping sur VPN, derrière d'autres VPN
  • Le périphérique VPN sur place voit-il mon IP public?
  • Synology VPN Server derrière le routeur + hotspot mobile attaché
  • Encapsulation GRE et multicast
  • StrongSwan IKEv2 + Windows 7 Agile VPN: ce qui provoque l'erreur 13801
  • Hors services réseau de VPN
  • Comment "effacer" l'allocation IP?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.