Openssh (http://www.openssh.com/) es una suite de herramientas que mantienen nuestras comunicaciones seguras.
Esta suite reemplaza:
- rlogin y telnet con un cliente ssh.
- rcp con scp.
- ftp con sftp.
Además incluye una aplicación servidora: sshd, además de una serie de herramientas como ssh-add, ssh-agent, ssh-keysign, ssh-keyscan, ssh-keygen y sftp-server.
Hoy tan sólo vamos a hablar de ssh-keyscan, una utilidad que he usado en varias ocasiones para recopilar las claves públicas de uno o varios hosts.
Utilicé, por ejemplo, ssh-keyscan en un script que realicé para apagar los terminales de un servidor ltsp cuando el usuario apaga, reinicia el servidor o cierra sesión. Cuando realizamos una conexión ssh el sistema nos pregunta si queremos almacenar la clave pública de la máquina a la que nos queremos conectar. Si le decimos que sí, almacenará dicha clave en el fichero ~/.ssh/known_hosts y no volverá a preguntar. El problema es que necesitaba que el script se ejecutase de forma no interactiva, almacenando la clave pública sin necesidad de intervención por parte del usuario. Pude resolver el problema gracias a ssh-keyscan.
Otra ocasión en la que he usado ssh-keyscan ha sido en un script que hace copias de seguridad en una máquina remota. En este caso tenía el mismo problema: Tratar de evitar que el sistema me preguntara si quería almacenar la clave pública de la máquina remota.
Para obtener la clave pública de una máquina no tenemos más que ejecutar el comando ssh-keyscan indicando la ip o el nombre del host. Ejemplo:
# ssh-keyscan 172.19.144.16
El sistema nos devolverá en pantalla el nombre o ip de la máquina junto con su clave pública.
También podemos escanear una lista de máquinas almacenada en un fichero:
# ssh-keyscan -f listamaquinas
Cuando el sistema nos pregunta si queremos almacenar la clave pública de una máquina a la que estamos conectando, y le respondemos que sí, guarda dicha clave pública dentro del home del usuario, en el fichero:
~/.ssh/known_hosts
Si quisiéramos escanear la dirección de una máquina y almacenar su clave pública de forma automática, podríamos hacer lo siguiente:
# ssh-keyscan 172.19.144.16 >> ~/.ssh/known_hosts | sort -u -o ~/.ssh/known_hosts
Como podemos observar, la clave pública se almacena en el fichero known_hosts dentro del directorio .ssh del home del usuario.
Por último, si queremos almacenar la clave pública de forma que se encuentre disponible para todos los usuarios, en lugar de guardarla en ~/.ssh/known_hosts, podemos almacenarla en el fichero /etc/ssh/ssh_known_hosts.
# ssh-keyscan 172.19.144.16 >> /etc/ssh/ssh_known_hosts | sort -u -o /etc/ssh/ssh_known_hosts
0 comentarios:
Publicar un comentario