9 votos

Encriptar contraseña temporal uso público ssh key

Puedo administrar una oficina virtual y nuestro personal utiliza SSH claves y contraseñas para la autenticación. Si uno de nuestro personal se olvida de su contraseña, hay una manera de cifrar una contraseña temporal utilizando su clave pública RSA para ssh por lo que puede enviar a él a través de e-mail?

He visto otras preguntas relacionadas con éste, sin embargo las "respuestas" por lo general se recomienda el uso del público/privado de claves SSH para llevar a cabo tareas generales de cifrado/descifrado y no en realidad el estado de si esto es posible. Me gustaría saber si es posible y cuales son los pasos para cifrar y descifrar, a continuación la contraseña.

8voto

David M. Syzdek Puntos 228

Finalmente encontré cómo convertir un OpenSSH clave pública a formato PEM en un blog y fue capaz de cifrar y descifrar una cadena usando mi clave privada y pública.

He resumido los pasos que he utilizado para realizar el cifrado y el descifrado.

Para cifrar una cadena:

# convert public key to PEM format
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8  > ~/.ssh/id_rsa.pub.pem

# encrypt string using public key
echo "String to Encrypt" \
   | openssl rsautl -pubin -inkey ~/.ssh/id_rsa.pub.pem -encrypt -pkcs \
   | openssl enc -base64 \
   > string.txt

Para descifrar una cadena (desde archivo):

openssl enc -base64 -d -in string.txt \
    | openssl rsautl -inkey ~/.ssh/id_rsa -decrypt

Ya que mi objetivo es un e-mail la contraseña, he escrito un muy basic script para automatizar un poco las cosas:

#!/bin/sh
if test "x${1}" == "x";then
   echo "Usage: ${0} <username>"
   exit 1
fi
SSHUSER=${1}
printf "Enter Password: "
read PASS1
echo ""
echo ""
ssh-keygen -f /home/${SSHUSER}/.ssh/id_rsa.pub -e -m PKCS8 \
    > /tmp/ssh-pubkey-${SSHUSER}.pem
echo 'cat << EOF |openssl enc -base64 -d |openssl rsautl -inkey ~/.ssh/id_rsa -decrypt'
echo "New Password: ${PASS1}" \
   | openssl rsautl -pubin -inkey /tmp/ssh-pubkey-${SSHUSER}.pem -encrypt -pkcs \
   | openssl enc -base64
echo "EOF"
echo ""
rm -f /tmp/ssh-pubkey-${SSHUSER}.pem

Me puede enviar la salida de la secuencia de comandos en un e-mail para el usuario para descifrar.

La secuencia de comandos completa está disponible en Github: https://gist.github.com/3078682

4voto

Lucas Kauffman Puntos 14284

Es posible ya que es solo una clave RSA. Uso de openssl:

openssl rsautl -encrypt -inkey alice.pub >message.encrypted

Yo esto de esta pregunta había Mellado en Unix/Linux SE.

Debo decir que PGP es más adecuado para esto.

1voto

someone Puntos 11

En general, sí, esto es posible. Todos SHH que hace es generar un Módulo N y dos llaves e (clave pública) y d (el privado). El mecanismo empleado es generalmente de RSA o DSA y las Claves generadas pueden ser utilizados para el cifrado. Lo único que tendría que hacer es extraer de la base64 blob que es la clave pública y, a continuación, el uso de un adecuado programa para cifrar los datos con estas claves. Usted podría estar interesado en Monkeysphere que se puede transferir entre ssh formato de la clave y un par de llaves. Esto debería permitir también el uso de las claves para el cifrado.

0voto

Scott Barnes Puntos 1309

Normalmente uno no "a granel de cifrado' con assymetric claves. Pero eso no importa ya que no se debe tratar con ese nivel de detalles. El uso de un kit de herramientas (openssl es un buen http://www.openssl.org/docs/apps/openssl.htmlpara hacer el trabajo para usted. Lo que quiero hacer es crear un mensaje cifrado que contiene la nueva contraseña temporal y especificar la clave del usuario-el par como el destinatario. Ejemplos en abundancia en esta página: http://www.openssl.org/docs/apps/smime.html

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: