Ich fand schließlich heraus, wie man einen öffentlichen OpenSSH-Schlüssel in einem Blog in das PEM-Format konvertiert, und konnte eine Zeichenfolge mit meinem privaten / öffentlichen Schlüssel erfolgreich verschlüsseln und entschlüsseln.
Ich habe die Schritte beschrieben, mit denen ich die Ver- und Entschlüsselung durchgeführt habe.
So verschlüsseln Sie eine Zeichenfolge:
# 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
So entschlüsseln Sie eine Zeichenfolge (aus einer Datei):
openssl enc -base64 -d -in string.txt \
| openssl rsautl -inkey ~/.ssh/id_rsa -decrypt
Da mein Ziel darin besteht, das Passwort per E-Mail zu senden, habe ich ein äußerst einfaches Skript geschrieben, um die Dinge ein wenig zu automatisieren:
#!/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
Ich kann dann die Ausgabe des Skripts in einer E-Mail senden, damit der Benutzer sie entschlüsseln kann.
Das vollständige Skript ist auf Github verfügbar: https://gist.github.com/3078682
Im Allgemeinen ist dies ja möglich. Alles, was SHH tut, ist, einen Modul N und zwei Schlüssel e (den öffentlichen Schlüssel) und d (den privaten Schlüssel) zu erzeugen. Der verwendete Mechanismus ist normalerweise RSA oder DSA, und die generierten Schlüssel können zur Verschlüsselung verwendet werden. Alles, was Sie tun müssen, ist, sie aus dem base64-Blob zu extrahieren, der der öffentliche Schlüssel ist, und dann ein geeignetes Programm zu verwenden, um Daten mit diesen Schlüsseln zu verschlüsseln. Sie könnten an Monkeysphere interessiert sein, das zwischen dem SSH-Schlüsselformat und den Gnupg-Schlüsseln übertragen kann. Auf diese Weise können Sie die Schlüssel auch zur Verschlüsselung verwenden.
quelle
Normalerweise führt man keine Massenverschlüsselung mit assymetrischen Schlüsseln durch. Dies spielt jedoch keine Rolle, da Sie sich nicht mit dieser Detailebene befassen sollten. Verwenden Sie ein Toolkit (openssl ist in Ordnung http://www.openssl.org/docs/apps/openssl.html ), um die Arbeit für Sie zu erledigen. Sie möchten eine verschlüsselte Nachricht erstellen, die das neue temporäre Kennwort enthält, und das Schlüsselpaar des Benutzers als Empfänger angeben. Beispiele in Hülle und Fülle auf dieser Seite: http://www.openssl.org/docs/apps/smime.html
quelle