공개 ssh 키를 사용하여 임시 비밀번호 암호화


9

가상 사무실을 관리하고 직원이 SSH 키와 비밀번호를 모두 인증에 사용합니다. 직원 중 한 사람이 자신의 암호를 잊어 버린 경우 공개 RSA ssh 키를 사용하여 임시 암호를 암호화하여 전자 메일을 통해 그에게 보낼 수 있습니까?

이 질문과 관련된 다른 질문을 보았지만 "답변"은 일반적으로 공개 / 개인 SSH 키를 사용하여 일반 암호화 / 암호 해독을 수행하지 말고 실제로 가능한지 여부를 명시하지 않는 것이 좋습니다. 실제로 가능한지, 암호를 암호화 한 다음 해독하는 단계는 무엇인지 알고 싶습니다.

답변:


8

마지막으로 블로그 에서 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


4

RSA 키일 뿐이므로 가능합니다. openssl을 사용하십시오.

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

유닉스 / 리눅스 SE 에서이 질문대해 언급했습니다 .

PGP가 더 적합하다고 말해야합니다.


1
문제는 SSH 공개 키가 OpenSSL이 인식하는 형식이 아니라는 것입니다. 키를 OpenSSL과 같은 툴킷에서 사용할 수있는 키로 변환하는 방법을 알아야했습니다.
David M. Syzdek

1

일반적으로 가능합니다. 모든 SHH는 모듈러스 N과 두 개의 키 e (공개 키)와 d (개인 키)를 생성합니다. 사용되는 메커니즘은 일반적으로 RSA 또는 DSA이며 생성 된 키는 암호화에 사용될 수 있습니다. 공개 키인 base64 blob에서 추출한 다음 적절한 프로그램을 사용하여 이러한 키로 데이터를 암호화하기 만하면됩니다. ssh 키 형식과 gnupg 키간에 전송할 수 있는 Monkeysphere에 관심이있을 수 있습니다 . 이를 통해 암호화 키를 사용할 수도 있습니다.


0

일반적으로 아시 메트릭 키로 '대량 암호화'를 수행하지 않습니다. 그러나 그 수준의 세부 사항을 다루어서는 안되므로 중요하지 않습니다. 툴킷 (openssl은 http://www.openssl.org/docs/apps/openssl.html )을 사용하여 작업하십시오. 새로운 임시 비밀번호를 포함하는 암호화 된 메시지를 작성하고 사용자의 키 쌍을 수신자로 지정하면됩니다. 이 페이지의 예 : http://www.openssl.org/docs/apps/smime.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.