gpg --export 및 gpg --import 로 공개키 교환하기
이 단계에서는 다른 사람과 공개키를 교환하는 방법을 배웁니다. 다른 사람을 위해 파일을 암호화하려면 그 사람의 공개키가 필요합니다. 마찬가지로 누군가 당신에게 암호화된 파일을 보내려면 당신의 공개키가 필요합니다. 이 과정은 본인의 공개키를 파일로 내보내고 (export), 다른 사람으로부터 받은 공개키를 본인의 GPG 키링으로 가져오는 (import) 작업을 포함합니다.
먼저, 본인의 공개키를 내보내겠습니다. gpg --export 명령어를 사용합니다. 이때 --armor 옵션을 사용하는 것이 관례인데, 이는 키를 텍스트 기반 (ASCII) 버전으로 생성하여 이메일이나 기타 텍스트 통신 채널에 복사하여 붙여넣기 쉽게 만들어 줍니다. 파일 이름은 labex.pub로 저장하겠습니다.
터미널에서 다음 명령어를 실행하십시오. labex 부분은 키 생성 시 사용한 사용자 ID 로 대체합니다.
gpg --export --armor -o labex.pub labex
ls 명령어로 파일이 생성되었는지 확인합니다.
ls
파일 목록에 labex.pub가 보여야 합니다. 내용도 확인할 수 있습니다.
cat labex.pub
출력 결과는 -----BEGIN PGP PUBLIC KEY BLOCK-----으로 시작하는 텍스트 블록입니다. 이것이 이제 다른 사람과 공유할 수 있는 본인의 공개키입니다.
다음으로, 다른 사용자로부터 공개키를 받아 키링에 가져오는 과정을 시뮬레이션해 보겠습니다. 실제 상황에서는 보안 채널을 통해 상대방의 공개키를 받게 됩니다. 이 실습에서는 이 과정을 재현하기 위해 임시로 Alice 의 키 쌍을 만들고 Alice 의 공개키를 내보내겠습니다.
먼저, Alice 를 위한 키 쌍을 임시로 생성합니다. 대화형 프롬프트 없이 자동화하기 위해 배치 모드를 사용합니다.
cat > alice-key-params << 'EOF'
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: Alice
Name-Email: alice@example.com
Expire-Date: 2y
%no-protection
%commit
EOF
매개변수 파일을 사용하여 Alice 의 키 쌍을 생성합니다.
gpg --batch --generate-key alice-key-params
키 생성을 확인하는 출력이 표시됩니다.
gpg: key <KEY_ID> marked as ultimately trusted
public and secret key created and signed.
이제 Alice 로부터 받은 것처럼 시뮬레이션하기 위해 Alice 의 공개키를 파일로 내보냅니다.
gpg --export --armor -o alice.pub alice@example.com
실제 상황에서는 상대방의 공개키만 가지게 되므로, 실습 시연을 위해 키링에서 Alice 의 비밀키를 삭제하겠습니다.
gpg --delete-secret-keys alice@example.com
확인 메시지가 뜨면 y를 입력하고 Enter를 누릅니다.
gpg --delete-keys alice@example.com
다시 한번 y를 입력하고 Enter를 눌러 삭제를 확인합니다.
이제 alice.pub 파일에 Alice 의 공개키가 저장되어 있으며, 이는 다른 사용자로부터 키를 전달받은 상황과 동일합니다.
임시로 사용한 키 생성 파일을 삭제합니다.
rm alice-key-params
이제 파일로 저장된 Alice 의 공개키를 gpg --import 명령어를 사용하여 본인의 GPG 키링으로 가져옵니다.
gpg --import alice.pub
키가 성공적으로 등록되었다는 확인 메시지가 표시됩니다.
gpg: key <KEY_ID>: public key "Alice <alice@example.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
Alice 의 키가 키링에 있는지 확인하기 위해 공개키 목록을 다시 확인합니다.
gpg --list-keys
출력 결과에 본인의 키 (labex) 와 새로 가져온 키 (Alice) 가 모두 표시됩니다.
/home/labex/.gnupg/pubring.kbx
------------------------------
pub rsa3072 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_LABEX>
uid [ultimate] labex <labex@example.com>
sub rsa3072 2025-07-01 [E] [expires: 2027-07-01]
pub rsa2048 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_ALICE>
uid [ unknown] Alice <alice@example.com>
sub rsa2048 2025-07-01 [E] [expires: 2027-07-01]
Alice 의 키가 [ unknown] 신뢰 수준으로 표시된 것을 확인하십시오. 다음 단계에서 키 신뢰를 관리하는 방법을 배우게 됩니다.