Suelo pedir a mis alumnos que generen un par de claves SSH para darles de alta en alguno de los servidores que usamos en la asignatura (añadiendo la parte pública en el fichero de claves autorizadas, authorized_keys). Lo siguiente suele ser crearles una base de datos y un usuario con acceso a la misma. Aquí, el usuario necesita una contraseña. Para pasarles esta contraseña y otros datos privados, solía pedirles a su vez que me enviaran su clave pública GPG. Realmente, este último paso no es necesario… si disponemos ya de una clave pública SSH podemos usarla para cifrar y descifrar ficheros, muy fácilmente. Una de las formas más sencillas es mediante una aplicación de la línea de comandos, ssh-vault.com.
Para cifrar, usaremos el siguiente comando:
echo -n "mensaje a cifrar" | ./ssh-vault -k /ruta/a/clave/publica/id_rsa.pub create vault
Para descifrar, el receptor usará este otro comando:
./ssh-vault -k /ruta/a/tu/fichero/.ssh/id_rsa view vault
También podríamos haber evitado el uso de una aplicación extra, usando los comando ssh-keygen y openssl que seguramente ya tengamos (la «pega» es que un usuario Windows no las tendrá…):
Convertimos la clave pública ssh a formato PEM:
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub
A continuación, ciframos el mensaje:
openssl rsautl -encrypt -pubin -inkey id_rsa.pem.pub -ssl -in myMessage.txt -out myEncryptedMessage.txt
El receptor usará también openssl para descifrar:
openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in myEncryptedMessage.txt -out myDecryptedMessage.txt
Fuente, cómo no, un hilo de discusión en SuperUser, una de las webs de la red StackExchange, la misma que alberga a StackOverflow.com