Con frecuencia hago sshing a máquinas virtuales a través de un host de salto que tiene direcciones IP efímeras y, a menudo, tienen claves ssh cambiantes. No quiero que me pregunten si la clave ssh cambia ni que acepte la clave ssh.
He leído sobre las opciones StrictHostKeyChecking y UserKnownHostsFile, pero no parecen tener ningún efecto. Al pasar UserKnownHostsFile=/dev/null en la línea de comando, la clave de host ssh siempre se agrega a ~/.ssh/known_hosts (Ahora tengo docenas de entradas) y siempre me piden que acepte la clave ssh.
No quiero que este nivel de no verificación sea global, por razones de seguridad, solo para esta conexión que tengo escrita en un archivo bash.
Aquí está el comando ssh que estoy usando:
ssh -o 'ConnectTimeout=10' \
-o 'StrictHostKeyChecking=no' \
-o 'UserKnownHostsFile=/dev/null' \
-o 'CheckHostIP=no' \
-i ~/.ssh/my_ident \
"username@ip" \
-J "username@jump"
Además, en caso de que la parte '=" sea el problema, probé esto pero sigo obteniendo el mismo resultado:
ssh -o 'ConnectTimeout 10' \
-o 'StrictHostKeyChecking no' \
-o 'UserKnownHostsFile /dev/null' \
-o 'CheckHostIP no' \
-i ~/.ssh/my_ident \
"username@ip" \
-J "username@jump"
Estoy en macOS 10.14.4 usando OpenSSH_7.9p1, LibreSSL 2.7.3
¿Alguna idea de por qué se ignoran los parámetros -o o no hacen lo que quiero?
Respuesta1
Es posible que esto no esté relacionado con MacOS. Los parámetros como StrictHostKeyChecking
y UserKnownHostsFile
solo CheckHostIP
están relacionados con el host de destino al que se está conectando. En tu caso es ip
. No tienen ningún efecto sobre el jump
host especificado como parte del -J
argumento.
Creo que no hay forma de especificar estas configuraciones para el host de salto en la línea de comando. Pero podrías agregar esos parámetros a tu ~/.ssh/config
archivo, algo como esto:
Host jump
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
CheckHostIP no