마지막으로 블로그 에서 OpenSSH 공개 키를 PEM 형식으로 변환하는 방법을 찾았 으며 개인 / 공개 키를 사용하여 문자열을 성공적으로 암호화 및 해독 할 수있었습니다.
암호화 및 암호 해독을 수행하는 데 사용한 단계를 설명했습니다.
문자열을 암호화하려면
# 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
그런 다음 사용자가 암호 해독 할 수 있도록 스크립트 출력을 전자 메일로 보낼 수 있습니다.
전체 스크립트는 Github에서 사용할 수 있습니다 : https://gist.github.com/3078682