Regularmente ssh en una computadora que es una computadora OS X / Linux de arranque dual. Las dos instancias del sistema operativo no comparten la misma clave de host, por lo que pueden verse como dos hosts que comparten la misma IP y DNS. Digamos que la IP es 192.168.0.9
, y los nombres son hostname
yhostname.domainname
Según tengo entendido, la solución para poder conectarse a los dos hosts es agregarlos al ~/.ssh/know_hosts
archivo. Sin embargo, es más fácil decirlo que hacerlo, ya que el archivo es ordenado, y tiene probablemente varias entradas por host ( 192.168.0.9
, hostname
, hostname.domainname
). Como consecuencia, tengo la siguiente advertencia
Warning: the ECDSA host key for 'hostname' differs from the key for the IP address '192.168.0.9'
¿Hay una manera fácil de editar el known_hosts
archivo, manteniendo los hash? Por ejemplo, ¿cómo puedo encontrar las líneas correspondientes a un hostame dado? ¿Cómo puedo generar los hashes para algunos hosts conocidos?
La solución ideal me permitiría conectarme sin problemas a esta computadora con ssh, sin importar si lo llamo o no 192.168.0.9
, hostname
o hostname.domainname
si usa su clave de host Linux o su clave de host OSX. Sin embargo, todavía quiero recibir una advertencia si hay un verdadero ataque de hombre en el medio, es decir , si se usa una clave diferente a estas dos.
Respuestas:
La solución más sencilla aquí es usar las mismas claves de host para Linux y OS X. Es decir, elegir un conjunto de
/etc/ssh/ssh_host_*_key*
archivos y copiarlos al otro sistema operativo. Luego, la misma clave de host se presentará a un cliente SSH independientemente del sistema operativo en el que haya arrancado, y el cliente SSH no será más sabio.fuente
/private/etc/ssh_host*
no lo es/etc/ssh/ssh_host*
.sshd
carga las claves de host una vez al inicio, por lo que es probable que deba reiniciarsshd
. Agregaré eso a la respuesta. En cuanto a que otras soluciones sean mejores, depende de su situación. Yo diría que las principales ventajas de este método es que solo requiere una configuración única y es más probable que funcione con múltiples implementaciones de clientes SSH.sshd
carga claves de host en cada nueva conexión. Tal vez ha sido así durante mucho tiempo y simplemente asumí que las claves de host se trataron como otrasshd
configuración. De todos modos, ese puede o no ser tu problema.Como @Izzy sugirió en un comentario anterior, ssh te dice la línea ofensiva, y al eliminar esa línea, (guardarla en otro lugar), aceptar la nueva clave y luego copiar la línea eliminada, terminas con dos claves para la misma host, y ssh aceptará cualquiera de los dos.
(También puede usar
ssh-keygen -H -F <hostname>
para buscar líneas en su archivo conocido_hosts que coincidan con ese nombre de host. Ejecutar esto después de copiar la línea eliminada de nuevo debería enumerar dos entradas).Si alguien sabe cómo hacer que PuTTY haga lo mismo, me interesaría saberlo.
fuente
Encontré esto que puede ayudarte con lo que quieres lograr.
Fuente: /programming/733753/how-to-handle-ssh-host-key-verification-with-2-different-hosts-on-the-same-but
fuente
known_hosts
yCheckHostIP
.La forma más fácil de resolver su problema es dar a cada host una dirección IP propia / distinta. Con 253 direcciones disponibles en su red (privada) e IPv4, eso no debería ser gran cosa. Déles direcciones IP fijas (ya que un servidor DHCP identificaría la máquina en función de la dirección MAC de las tarjetas de red, y ambas obtendrían la misma dirección). No veo ninguna otra solución si desea mantener las medidas de seguridad (que tampoco descartaría por esa pequeña "comodidad").
fuente
192.168.0.xx
es y no es privada. Es una dirección IPv4 'real', dada por mi universidad y que no puedo cambiar.No me encuentro con ese problema cuando me conecto a varias cajas VPS que comparten la misma IP porque cada una tiene un puerto SSH diferente (20022,30022, etc.) por lo que están registradas como hosts conocidos con diferentes claves.
¿Podría ser una solución para usted?
fuente
Otro artículo , que describe varias formas de manejar su problema:
fuente
hostname
se reinicie en Linut o OSXComo desea mantener la estricta comprobación de la clave del host, quisiera que usaran diferentes
known_hosts
archivos. Para hacer esto, configure su~/.ssh/config
archivo (o el/etc/ssh/ssh_config
archivo si necesita que funcione en múltiples cuentas de usuarios locales) de esta manera:, reemplazando
$REALHOSTNAME
con el nombre de host real o la dirección IP, por supuesto. (No importa cuál elija, siempre y cuando elija algo después del "Nombre de host" que resolvería en la dirección IP, pero usaría el nombre de host en lugar de una dirección IP, solo por principios generales).Entonces,
ssh myserver.linux
y porssh myserver.osx
lo tanto, puede tener diferentes claves de host, pero aún así obtiene la comprobación. Si Linux está activo y escribe OS X (o viceversa), recibirá la advertencia (que creo que es el efecto deseado).Si tuviera este problema, me aseguraría de que hubiera algo completamente incorrecto en el
known_hosts
archivo principal que no coincida con ninguno de los dos, de modo que si escribe en$REALHOSTNAME
lugar demyserver.osx
recibir la advertencia. :-) Lo haría poniendo algo comoen mi
/etc/hosts
, luego haciendo unassh $REALHOSTNAME
y aceptando la nueva clave, luego sacando esa entrada.fuente