línea de comando ssh especificar huella digital de clave de host del servidor

15

Usando la sshlínea de comando (OpenSSH), ¿puedo especificar la huella digital de la clave de host del servidor?

Esto es posible con winscp.com usando (por ejemplo) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

He leído la página de manual un par de veces, me disculpo si me he perdido lo obvio allí.

No quiero simplemente aceptar automáticamente una clave de host, y no quiero requerir que el usuario actualice su known_hostsclave, sino especificar la clave de host de alguna forma en la línea de comandos.

payo
fuente
-o UserKnownHostsFile podría funcionar con un archivo temporal.
payo

Respuestas:

16

No hay una opción de línea de comandos en OpenSSH para pasar una huella digital de clave de host.

Aunque puede usar un archivo temporal (con el mismo formato que el known_hosts) y sshusarlo con -o UserKnownHostsFile:

ssh -o "UserKnownHostsFile my_temp_known_host" host.example.com

Consulte las páginas de comando man ssh(para las -o) y ssh_config(para las UserKnownHostsFile).


También puede considerar usar el StrictHostKeyChecking yes.


Como se sugiere en Auto aceptar la huella digital de la clave rsa desde la línea de comandos , puede escribir un pequeño script que le permita lograr eso:

#!/bin/bash

TEMPFILE=$(mktemp)
echo "$1" > $TEMPFILE

ssh -o "UserKnownHostsFile $TEMPFILE" ${@:2}

rm $TEMPFILE

Si llama al script ssh_known_host, puede usarlo, pasando la clave como primer argumento:

ssh_known_host 'github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==' [email protected]
Martin Prikryl
fuente
¿Alguna pista de por qué -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")no funciona?
Kasperd
2
@kasperd Posiblemente porque el archivo fd creado por <()se puede leer solo una vez, mientras sshlee el archivo repetidamente.
Martin Prikryl
Gracias por su respuesta y consejos utilizando StrictHostKeyChecking. Esta solución me funcionará.
payo
1
Olvidé mencionar en la edición que la solución de script evita el ataque de hombre en el medio
RDP