Del lado del servidor

Del lado del servidor

sshLos 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_hostsarchivo.

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 sshdeambosde 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_hostsantes 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 2018y 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/configpara 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 Hostnamesi cada uno Hostya se resuelve en una IP. Verman ssh_configpara 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 nomientras 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.

información relacionada