
ssh
Los clientes (de forma predeterminada, al menos en Ubuntu 18.04 y FreeBSD 12) siempre verifican si la huella digital de la clave del servidor está en el known_hosts
archivo.
Tengo un host en la LAN que tiene arranque dual; Ambos sistemas operativos utilizan la misma IP estática. Me gustaría conectarme a través ssh
deambosde ellos, sin encontrar errores.
Obviamente, esto viola las comprobaciones realizadas en known_hosts
: si acepto una huella digital, estará relacionada con la IP del host; cuando se cambia el sistema operativo, la huella digital cambia, mientras que la IP es la misma, y necesito eliminarla manualmente known_hosts
antes de poder conectarme nuevamente. Me gustaría esa huella digital,oel otro, se acepta al considerar esa propiedad intelectual.
Hay unalado del cliente¿Solución para superar este problema?
Estoy usando OpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018
y OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
.
Nota: No quiero "no verificar" la huella digital del servidor. Me pregunto si es posible relacionar dos huellas digitales alternativas (no solo una) con la dirección IP del servidor.
Respuesta1
Su problema es que las claves de host son solo eso, son una clave para el host. En realidad, se supone que solo debe haber uno por host. Por supuesto, hay varias porque hay varios tipos de claves, pero evitaría depender de los tipos de claves para brindarle varias claves aceptables para un solo host.
Del lado del servidor
Mi primera sugerencia es que consideres detenidamente si realmente quieres hacer esto del lado del cliente. Puede tratar estos dos sistemas operativos como el mismo host y simplemente copiar la clave del host de uno al otro.
Si copia /etc/ssh/ssh_host*
desde OpenSSH, puede usarlos en otros sistemas operativos. Aunque es posible que necesiten algún formateo dependiendo del servidor SSH que ejecute.
Pero ...
¿Puedo preguntar por qué ha descartado las soluciones del lado del servidor? ¿No sería la forma más sencilla intentar que ambos sistemas operativos utilicen la misma clave de host? – Philip Couling
@PhilipCouling En parte por facilidad de uso: uno de los sistemas operativos es Windows. En parte, para no transferir claves de un host a otro, lo cual a veces es una práctica desaconsejada. Pero la razón principal es: me gustaría obtener cierto grado de flexibilidad en la configuración del cliente ssh, si es posible. – Parque Bow
Creo que lo que estás buscando es una forma de tratar los dos sistemas operativos como hosts diferentes aunque compartan una IP y un número de puerto.
Del lado del cliente
Quizás la forma más confiable sea establecer una configuración específica del host para cada sistema operativo. Edite (o cree) ~/.ssh/config
para agregar:
Host windows.dualbootbox
Hostname 192.168.10.20
UserKnownHostsFile ~/.ssh/windows.dualbootbox.known_hosts
Host ubuntu.dualbootbox
Hostname 192.168.10.20
UserKnownHostsFile ~/.ssh/ubuntu.dualbootbox.known_hosts
No es necesario especificar Hostname
si cada uno Host
ya se resuelve en una IP. Verman ssh_config
para más opciones de configuración.
Con la configuración anterior usted puede entonces:
ssh [email protected]
ssh [email protected]
Respuesta2
Hay muchas formas de hacer esto, una es usar StrictHostKeyChecking no
mientras realiza ssh en sus hosts, no realizará ninguna entrada enknown_hosts.
ssh -o StrictHostKeyChecking=no <ip>
O
ssh -o UserKnownHostsFile=/dev/null <ip>
O puede modificar su archivo .ssh/config según sus necesidades.