En Linux y (Windows a través de gitbash) si se ejecuta el comando:
ssh-keyscan 192.168.1.X | ssh-keygen -lf -
Funciona como se esperaba, pero en MacOS (El Capitan) surge
-: No such file or directory
# 192.168.1.X SSH-2.0-OpenSSH .....
# 192.168.1.X SSH-2.0-OpenSSH .....
# 192.168.1.X SSH-2.0-OpenSSH .....
¿Cómo se arregla esto?
Nota El bash
versión en mi MacOS es 3.2.57(1)-liberación y si se ejecuta ssh -V
devuelve OpenSSH_6.9p1, LibreSSL 2.1.8
1 votos
En MacOS Monterey el comando anterior funciona, por lo que parece que la versión de Openssh incluida con El Capitan no soporta la lectura del archivo de claves desde la entrada estándar (tenga en cuenta que Apple tiene su propio fork de openssh, ver opensource.apple.com/releases ). Como solución alternativa, puede utilizar la sustitución de procesos de la siguiente manera
ssh-keygen -lf <(ssh-keyscan 192.168.1.X)
. ¿Podría probarlo e informarnos?0 votos
Gracias por el apoyo - cuando se ejecuta el comando sugerido - la última línea es
/dev/fd/63 is not a public key file
- He añadido la información de la versión SSH en el post también1 votos
Gracias por la prueba, lástima que no haya funcionado. Tendrás que guardar primero el fichero de claves y luego pasarlo a
ssh-keygen
por ejemplo:ssh-keyscan 192.168.1.X > /tmp/keyfile; ssh-keygen -lf /tmp/keyfile; rm /tmp/keyfile
. Podrías guardar ese comando como una función del shell para acelerar el proceso (si necesitas ayuda con eso, házmelo saber y publicaré una respuesta).0 votos
Tu comando funciona. Sólo por curiosidad por qué se utilizó
;
en&&
?1 votos
Me alegro de que funcione. Prefiero usar
;
porquecmdA && cmdB
describe una relación condicional, es decir,cmdA
sólo se ejecuta sicmdB
tuvo éxito, lo que podría evitar que el archivo temporal se borre en el último paso si se produce un error.;
, por otro lado, es sólo un separador para que se ejecuten todos los comandos, así sé que el archivo temporal siempre se borrará. ¿Debo publicar una respuesta, o prefiere hacerlo usted?1 votos
Por favor, publique su respuesta - su solución funciona y, por supuesto, es válida. Así que merece ser marcada como una respuesta. Considere la posibilidad de indicar el
;
&
diferencia1 votos
Gracias por tu comentario, he añadido una respuesta con el una línea anterior y también con un función shell que puede resultar más cómodo de utilizar. Compruébelo.