मैंने आखिरकार पाया कि एक ब्लॉग पर एक ओपनएसएसएच सार्वजनिक कुंजी को पीईएम प्रारूप में कैसे परिवर्तित किया जाए और मेरी निजी / सार्वजनिक कुंजी का उपयोग करके एक स्ट्रिंग को सफलतापूर्वक एन्क्रिप्ट और डिक्रिप्ट करने में सक्षम था।
मैंने एन्क्रिप्शन और डिक्रिप्शन करने के लिए उपयोग किए गए चरणों को रेखांकित किया है।
स्ट्रिंग को एन्क्रिप्ट करने के लिए:
# 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
एक स्ट्रिंग को डिक्रिप्ट करने के लिए (फाइल से):
openssl enc -base64 -d -in string.txt \
| openssl rsautl -inkey ~/.ssh/id_rsa -decrypt
चूंकि मेरा लक्ष्य पासवर्ड को ई-मेल करना है, इसलिए मैंने चीजों को थोड़ा स्वचालित करने के लिए एक अत्यंत बुनियादी स्क्रिप्ट लिखी है:
#!/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
फिर मैं उपयोगकर्ता को डिक्रिप्ट करने के लिए ई-मेल में स्क्रिप्ट का आउटपुट भेज सकता हूं।
पूरी स्क्रिप्ट जीथब: https://gist.github.com/3078682 पर उपलब्ध है