쉘 스크립트: 암호화된 비밀번호를 해독하고 변수에 저장합니다.

쉘 스크립트: 암호화된 비밀번호를 해독하고 변수에 저장합니다.

mysql의 비밀번호가 포함된 "credential.txt" 파일이 있습니다. 이 텍스트 파일을 호출하고 여기에서 비밀번호를 검색하는 또 다른 스크립트가 있습니다. 보안상의 이유로 비밀번호를 직접 저장하고 싶지 않습니다. 이를 위해 Triple-DES Cipher 암호화를 사용하여 파일을 암호화했습니다.

openssl des3 -salt -in credential.txt -out credential.des3

인용하다:https://linuxtidbits.wordpress.com/2009/01/12/encryptingdecrypting-a-file-easily-with-a- Couple-bash-scripts/

이제 쉘 스크립트에서 credential.des3에서 암호화된 비밀번호를 가져와서 변수에 저장하려고 합니다. 인용된 기사에서는 파일을 해독하고 해독된 비밀번호를 다른 파일에 저장하는 방법을 보여줍니다.

openssl des3 -d -salt -in credential.des3 -out unencrypted-data.file

문제는 해독된 파일을 시스템에 저장하고 싶지 않다는 것입니다. 해독된 출력을 캡처하고 싶습니다. 내 쉘 스크립트는 cronjob을 사용하여 자동으로 실행되므로 사용자에게 비밀번호를 지정하도록 요청할 수 없습니다. 비밀번호를 해독하고 다음과 같은 변수에 저장하는 방법이 있습니까?

var = $(decrypted_pass)

쉘 스크립트에서 필요할 때 사용하십시오.

다음 명령을 시도했지만 작동하지 않습니다.

var=$(openssl das3 -salt -in credential.des3)

답변1

당신이 사용할 수있는

pass=$(openssl des3 -d -salt -in credential.des3)

(지정된 출력 파일 없음)

하지만 여기서 문제는 cron. 환경 변수를 통해 일부 데이터를 스크립트에 전달할 수 있지만 파일 시스템( 대부분 파일) 에 저장하지 않고 cron암호를 전달하는 쉬운 방법은 없습니다 .croncrontab

영구 저장소에 대한 일반 텍스트 비밀번호 액세스를 방지하려면 이를 tmpfs파일 시스템(Linux)에 저장하도록 구성할 수 있습니다. mount -t tmpfs tmpfs /path/to/mount/point또는 에 해당하는 항목을 사용하여 설치할 수 있습니다 fstab. 시스템에서 이미 /tmpusing 을 사용하고 있을 수도 있습니다 tmpfs.

또 다른 옵션은 일반 텍스트 비밀번호를 저장하는 스크립트를 지속적으로 실행하고 sleep적절한 시간에 실제 작업을 수행하는 것입니다. 하지만 이 경우 스크립트가 충돌하면 자동으로 다시 시작되지 않습니다. 어쨌든 다시 시작하려면 비밀번호를 수동으로 입력해야 합니다.

어쨌든 메모리의 비밀은 스왑을 위해 기록될 수 있습니다(있는 경우). (이런 이유로 암호화폐 거래소를 이용하는 이유가 있습니다.)

관련 정보