기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Transfer Family의 SSH 및 PGP 키 관리
이 섹션에서는 SSH 키를 생성하는 방법과 키를 회전하는 방법 등 SSH 키에 대한 정보를 확인할 수 있습니다. Transfer Family를 사용하여 키를 관리하는 방법에 대한 자세한 내용은 A AWS Transfer Family 및 AWS Lambda를 사용하여 사용자 셀프 서비스 키 관리 AWS Lambda 활성화하기
참고
AWS Transfer Family RSA, ECDSA 및 ED25519 키를 허용합니다.
이 섹션에서는 프리티 굿 프라이버시 (PGP) 키를 생성하고 관리하는 방법도 다룹니다.
사용자 및 서버 키에 지원되는 알고리즘
AWS Transfer Family내에서 사용자 및 서버 키 쌍에 대해 다음과 같은 키 알고리즘이 지원됩니다.
참고
워크플로에서 PGP 복호화와 함께 사용할 알고리즘은 PGP 키 쌍에 지원되는 알고리즘을 참조하세요.
-
ED25519의 경우:
ssh-ed25519
-
RSA의 경우:
-
rsa-sha2-256
-
rsa-sha2-512
-
-
ECDSA의 경우:
-
ecdsa-sha2-nistp256
-
ecdsa-sha2-nistp384
-
ecdsa-sha2-nistp521
-
참고
이전 보안 정책에 대해 ssh-rsa
SHA1을 지원합니다. 자세한 내용은 암호화 알고리즘를 참조하세요.
서비스 관리 사용자를 위한 SSH 키 생성
서버를 설정해 서비스 관리형 인증 메서드를 사용하는 사용자를 인증할 수 있습니다. 이때 사용자 이름과 SSH 키는 서비스 내에 보관됩니다. 사용자의 퍼블릭 SSH 키는 서버에 사용자의 속성으로 업로드됩니다. 이 키는 서버에서 표준 키 기반 인증 프로세스의 일부로 사용됩니다. 각 사용자는 파일에 여러 퍼블릭 SSH 키를 개별 서버와 함께 보유할 수 있습니다. 사용자당 저장할 수 있는 키 수에 대한 제한은 Amazon Web Services 일반 참조의 AWS Transfer Family 엔드포인트 및 할당량을 참조하세요.
서비스 관리형 인증 방법 대신 사용자 지정 ID 공급자 또는 를 사용하여 사용자를 인증할 수 있습니다. AWS Directory Service for Microsoft Active Directory자세한 내용은 사용자 지정 자격 증명 공급자와 작업 또는 AWS 디렉터리 서비스 ID 제공자 사용를 참조하세요.
서버는 한 가지 방법 (서비스 관리형, 디렉터리 서비스 또는 맞춤 ID 제공자)을 사용해서만 사용자를 인증할 수 있으며, 서버를 만든 후에는 이 방법을 변경할 수 없습니다.
macOS, Linux 또는 Unix에서 SSH 키 생성
macOS, Linux 또는 Unix 작동 시스템에서는 ssh-keygen
명령을 사용하여 SSH 퍼블릭 키와 키 쌍이라고도 하는 SSH 프라이빗 키를 생성합니다.
macOS, Linux 또는 Unix 작동 시스템에서 SSH 키를 만들려면
-
macOS, Linux 또는 Unix 작동 시스템에서는 명령 터미널을 엽니다.
-
AWS Transfer Family RSA-, ECDSA- 및 ED25519 형식의 키를 허용합니다. 생성하려는 키 쌍의 타입에 따라 적절한 명령을 선택합니다.
참고
다음 예에서는 패스프레이즈를 지정하지 않았는데, 이 경우 도구에서 패스프레이즈를 입력한 다음 반복하여 확인하도록 요청합니다. 패스프레이즈를 만들면 프라이빗 키를 더 잘 보호할 수 있고 전반적인 시스템 보안도 향상될 수 있습니다. 패스프레이즈는 복구할 수 없습니다: 암호를 잊은 경우 새 키를 생성해야 합니다.
그러나 Transfer Family 서버는 시작 시 패스프레이즈를 요청할 수 없으므로 서버 호스트 키를 생성하는 경우 명령에서
-N ""
옵션을 지정하거나 메시지가 표시되면Enter
을 두 번 눌러 빈 암호를 지정해야 합니다.-
RSA 4096비트 키 쌍 생성:
ssh-keygen -t rsa -b 4096 -f
key_name
-
ECDSA 521비트 키 쌍을 생성하려면 (ECDSA의 비트 크기는 256, 384, 521입니다):
ssh-keygen -t ecdsa -b 521 -f
key_name
-
ED25519 키 쌍을 생성하려면:
ssh-keygen -t ed25519 -f
key_name
참고
은(는) SSH 키 쌍 파일 명칭입니다.key_name
다음은
ssh-keygen
출력의 예입니다.ssh-keygen -t rsa -b 4096 -f key_name Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in key_name. Your public key has been saved in key_name.pub. The key fingerprint is: SHA256:8tDDwPmanTFcEzjTwPGETVWOGW1nVz+gtCCE8hL7PrQ bob.amazon.com The key's randomart image is: +---[RSA 4096]----+ | . ....E | | . = ... | |. . . = ..o | | . o + oo = | | + = .S.= * | | . o o ..B + o | | .o.+.* . | | =o*+*. | | ..*o*+. | +----[SHA256]-----+
참고
앞의 예처럼
ssh-keygen
명령을 실행하면, 현재 디렉터리에 퍼블릭 및 프라이빗 키가 파일로 생성됩니다.이제 SSH 키 쌍을 사용할 준비가 되었습니다. 3단계와 4단계에 따라 서비스 관리 사용자를 위한 SSH 공개 키를 저장하세요. 이러한 사용자는 Transfer Family 서버 엔드포인트에서 파일을 전송할 때 이 키를 사용합니다.
-
-
파일로 이동하여 엽니다.key_name
.pub -
텍스트를 복사하여 서비스 관리 사용자의 SSH 퍼블릭 키에 붙여넣습니다.
-
https://console.aws.amazon.com/transfer/
에서 AWS Transfer Family 콘솔을 연 다음 탐색 창에서 서버를 선택합니다. -
서버 페이지에서 업데이트하려는 사용자가 포함된 서버의 서버 ID를 선택합니다.
-
퍼블릭 키를 추가할 사용자를 선택합니다.
-
SSH 퍼블릭 키 창에서 SSH 퍼블릭 키 추가를 선택합니다.
-
생성한 퍼블릭 키 텍스트를 SSH 퍼블릭 키 텍스트 상자에 붙여넣은 다음 키 추가를 선택합니다.
새 키는 SSH 퍼블릭 키 창에 나열됩니다.
-
Microsoft Windows에서 SSH 키 생성
Windows는 약간 다른 SSH 키 쌍 형식을 사용합니다. 퍼블릭 키는 PUB
형식이어야 하고, 프라이빗 키는 PPK
형식이어야 합니다. Windows에서는 PuTTYgen을 이용해 적절한 형식의 SSH 키 쌍을 만들 수 있습니다. 또 PuTTYgen을 사용하면 ssh-keygen
으로 생성한 프라이빗 키를 .ppk
파일로 변환할 수도 있습니다.
참고
WinSCP를 .ppk
형식이 아닌 프라이빗 키 파일과 함께 제공하면, 클라이언트는 키를 .ppk
형식으로 변환할 기회를 제공합니다.
Windows에서 PuTTYgen을 이용해 SSH 키를 생성하는 자습서를 확인하고 싶다면, SSH.com 웹사이트
SSH2 퍼블릭 키를 PEM 형식으로 변환
AWS Transfer Family PEM 형식의 공개 키만 허용합니다. SSH2 퍼블릭 키가 있는 경우 이를 변환해야 합니다. SSH2 퍼블릭 키의 형식은 다음과 같습니다:
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20160402" AAAAB3NzaC1yc2EAAAABJQAAAgEAiL0jjDdFqK/kYThqKt7THrjABTPWvXmB3URI : : ---- END SSH2 PUBLIC KEY ----
PEM 퍼블릭 키의 형식은 다음과 같습니다:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAA...
다음 명령을 실행하여 SSH2 형식의 퍼블릭 키를 PEM 형식의 퍼블릭 키로 변환합니다. ssh2-key
를 SSH2 키 명칭으로 바꾸고 PEM-key
를 PEM 키 명칭으로 바꾸세요.
ssh-keygen -i -f
ssh2-key
.pub >PEM-key
.pub
SSH 키 교체
보안상 SSH 키 교체는 보안 모범 사례로 권장됩니다. 일반적으로 이러한 교체는 보안 정책의 일부로 지정되며, 자동화된 방식으로 구현됩니다. 보안 수준에 따라, 대단히 민감한 통신의 경우 SSH 키 쌍을 한 번만 사용할 수도 있습니다. 이렇게 하면 저장된 키 때문에 발생하는 모든 위험을 제거할 수 있습니다. 하지만 SSH 보안 인증을 일정 기간 보관하고, SFTP 사용자에게 과도한 부담을 주지 않는 주기를 설정하는 방법이 더 보편적입니다. 가장 일반적인 주기는 3개월입니다.
SSH 키 교체는 2가지 방식으로 실행합니다.
-
콘솔에서 새 SSH 퍼블릭 키를 업로드하고 기존 SSH 퍼블릭 키를 삭제할 수 있습니다.
-
API를 사용하면 API를 사용하여 사용자의 SSH (Secure Shell) 공개 키를 삭제하고 DeleteSshPublicKeyAPI를 사용하여 사용자 계정에 새 SSH (Secure Shell) 공개 키를 추가하여 기존 사용자를 업데이트할 수 있습니다. ImportSshPublicKey
PGP 키 생성 및 관리
Transfer Family가 워크플로를 통해 처리하는 파일에 프리티 굿 프라이버시(PGP) 복호화을 사용할 수 있습니다. 워크플로 단계에서 암호 해독을 사용하려면 PGP 키를 제공하십시오.
AWS 스토리지 블로그에는 Transfer Family Managed 워크플로를 사용하여 코드를 작성하지 않고 파일을 간단히 해독하는 방법, PGP를 사용한 파일 암호화 및 암호
PGP 키 생성
PGP 키를 생성하는 데 사용하는 연산자는 운영 체제와 사용 중인 키 생성 소프트웨어 버전에 따라 다릅니다.
Linux 또는 Unix를 사용하는 경우 패키지 설치 프로그램을 사용하여 gpg
를 설치하세요. Linux 배포판에 따라 다음 명령 중 하나를 사용할 수 있습니다.
sudo yum install gnupg
sudo apt-get install gnupg
Windows 또는 macOS의 경우, https://gnupg.org/download/
PGP 키 생성기 소프트웨어를 설치한 후 gpg
--full-gen-key
또는 gpg --gen-key
명령을 실행하여 키 쌍을 생성합니다.
참고
GnuPG
버전 2.3.0 이상을 사용하는 경우 gpg --full-gen-key
를 실행해야 합니다. 생성할 키 타입을 묻는 메시지가 표시되면 RSA 또는 ECC를 선택합니다. 하지만 ECC를 선택할 경우 타원 곡선에서 NIST 또는 BrainPool을 선택해야 합니다. Curve 25519를 선택하지 마세요.
PGP 키 쌍에 지원되는 알고리즘
PGP 키 쌍에 대해 다음과 같은 알고리즘을 지원합니다.
-
RSA
-
Elgamal
-
ECC:
-
NIST
-
BrainPool
-
참고
CCurve25519 키는 지원되지 않습니다.
유용한 gpg
하위 명령
다음은 gpg
에 유용한 몇 가지 하위 명령입니다:
-
gpg --help
– 이 명령에는 사용 가능한 옵션이 나열되며 몇 가지 예가 포함될 수 있습니다. -
gpg --list-keys
— 이 명령은 생성한 모든 키 페어의 세부 정보를 나열합니다. -
gpg --fingerprint
— 이 명령은 각 키의 핑거프린트를 포함하여 모든 키 페어에 대한 세부 정보를 나열합니다. -
gpg --export -a
– 이 명령은 키가 생성될 때 사용된user-name
키의 퍼블릭 키 부분을 내보냅니다.user-name
PGP 키 관리
PGP 키를 관리하려면 를 사용하십시오. AWS Secrets Manager
참고
비밀 명칭에는 Transfer Family 서버 ID가 포함됩니다. 즉, PGP 키 정보를 AWS Secrets Manager에 저장하기에 앞서 먼저 서버를 식별하거나 생성했어야 합니다.
모든 사용자에 대해 하나의 키와 패스프레이즈를 사용하려는 경우 PGP 키 블록 정보를 비밀 명칭 aws/transfer/
아래에 저장할 수 있습니다. 여기서 server-id
/@pgp-default
은(는) Transfer Family 서버의 ID입니다. Transfer Family는 워크플로를 실행하는 사용자와 server-id
일치하는 키가 없는 경우 이 기본 키를 사용합니다.user-name
특정 사용자를 위한 키를 생성할 수 있습니다. 이 경우 암호 이름의 형식은 다음과 같습니다aws/transfer/
. 여기서 Transfer Family 서버의 워크플로를 실행하는 사용자와 server-id
/user-name
일치합니다.user-name
참고
사용자당 Transfer Family 서버당 최대 3개의 PGP 프라이빗 키를 저장할 수 있습니다.
복호화에 사용할 PGP 키를 구성하려면
-
사용 중인 GPG 버전에 따라 다음 명령 중 하나를 실행하여 Curve 25519 암호화 알고리즘을 사용하지 않는 PGP 키 쌍을 생성하십시오.
-
GnuPG
버전 2.3.0 이상을 사용하는 경우, 다음 명령을 실행합니다.gpg --full-gen-key
RSA
를 선택할 수도 있고,ECC
를 선택할 경우NIST
또는BrainPool
하나를 타원 곡선으로 선택할 수 있습니다.gpg --gen-key
대신 실행하는 경우 ECC Curve 25519 암호화 알고리즘을 사용하는 키 쌍을 생성합니다. 이 알고리즘은 현재 PGP 키를 지원하지 않습니다. -
RSA가 기본 암호화 타입이므로 2.3.0 이전의
GnuPG
버전의 경우, 다음 명령을 사용할 수 있습니다.gpg --gen-key
중요
키 생성 프로세스 중에 패스프레이즈와 이메일 주소를 제공해야 합니다. 이러한 값을 기록해 두세요. 이 절차의 AWS Secrets Manager 뒷부분에서 키의 세부 정보를 입력할 때 패스프레이즈를 제공해야 합니다. 그리고 다음 단계에서 프라이빗 키를 내보내려면 동일한 이메일 주소를 제공해야 합니다.
-
-
프라이빗 키를 내보내려면 다음 명령을 실행합니다. 이 명령을 사용하려면
를 프라이빗 키 블록을 저장할 파일 명칭으로,private.pgp
를 키 쌍을 생성할 때 사용한 이메일 주소로 바꾸세요.marymajor@example.com
gpg --output
private.pgp
--armor --export-secret-keymarymajor@example.com
-
PGP 키를 저장하는 AWS Secrets Manager 데 사용합니다.
-
왼쪽 탐색 창에서 암호를 선택합니다.
-
암호 페이지에서 새 암호 저장을 선택합니다.
-
암호 타입 선택 페이지의 암호 타입에 대해 다른 타입의 암호를 선택합니다.
-
키/값 쌍 섹션에서 키/값 탭을 선택합니다.
-
키 –
PGPPrivateKey
를 입력합니다.참고
PGPPrivateKey
문자열을 정확히 입력해야 합니다: 문자 앞이나 사이에 공백을 추가하지 마세요. -
값 — 프라이빗 키의 텍스트를 값 필드에 붙여넣습니다. 이 절차의 앞부분에서 키를 내보낼 때 지정한 파일 (예:
private.pgp
) 에서 프라이빗 키의 텍스트를 찾을 수 있습니다. 키는-----BEGIN PGP PRIVATE KEY BLOCK-----
(으)로 시작하고-----END PGP PRIVATE KEY BLOCK-----
(으)로 끝납니다.참고
텍스트 블록에는 프라이빗 키만 포함되고 퍼블릭 키는 포함되지 않는지 확인하세요.
-
-
행 추가를 선택하고 키/값 쌍 섹션에서 키/값 탭을 선택합니다.
-
키 –
PGPPassphrase
를 입력합니다.참고
PGPPassphrase
문자열을 정확히 입력해야 합니다: 문자 앞이나 사이에 공백을 추가하지 마세요. -
값 – PGP 키 쌍을 생성할 때 사용한 패스프레이즈를 입력합니다.
참고
최대 3세트의 키와 패스프레이즈를 추가할 수 있습니다. 두 번째 세트를 추가하려면 새 행 두 개를 추가하고 키에
PGPPrivateKey2
와(과)PGPPassphrase2
를 입력한 다음 다른 프라이빗 키와 패스프레이즈를 붙여넣습니다. 세 번째 세트를 추가하려면 키 값이PGPPrivateKey3
및PGPPassphrase3
여야 합니다. -
-
다음을 선택합니다.
-
암호 구성 페이지에 암호를 위한 명칭과 설명을 입력합니다.
-
기본 키, 즉 모든 Transfer Family 사용자가 사용할 수 있는 키를 만들려면 다음을 입력하세요
aws/transfer/
.server-id
/@pgp-default
를 복호화 단계가 있는 워크플로가 포함된 서버의 ID로 바꾸세요.server-id
-
특정 Transfer Family 사용자가 사용할 키를 만들려면
aws/transfer/
를 입력하세요.server-id
/user-name
를 복호화 단계가 있는 워크플로가 포함된 서버의 ID로 바꾸고server-id
를 워크플로를 실행하는 사용자 이름으로 바꾸세요.user-name
은(는) Transfer Family 서버가 사용하는 ID 제공자에 저장됩니다.user-name
-
-
다음을 선택하고 순환 구성 페이지의 기본값을 그대로 사용합니다. 그 다음 다음을 선택합니다.
-
검토 페이지에서 저장을 선택하여 암호를 만들고 저장합니다.
다음 스크린샷은 특정 Transfer Family 서버의 사용자 marymajor
의 세부 정보를 보여줍니다. 이 예에서는 세 개의 키와 해당 패스프레이즈를 보여줍니다.
![Transfer Family 서버 및 사용자를 위한 세 개의 키와 패스프레이즈가 포함된 비밀 세부 정보 페이지를 보여주는 AWS Secrets Manager 콘솔](images/pgp-secrets-02.png)
지원되는 PGP 클라이언트
다음 클라이언트는 Transfer Family에서 테스트되었으며 PGP 키를 생성하고 워크플로를 통해 해독하려는 파일을 암호화하는 데 사용할 수 있습니다.
-
Gpg4win + Kleopatra.
참고
파일 서명/암호화를 선택할 때는 서명 주체 선택을 취소해야 합니다: 현재 암호화된 파일에 대한 서명은 지원하지 않습니다.
암호화된 파일에 서명하고 암호 해독 워크플로를 사용하여 Transfer Family 서버에 업로드하려고 하면 다음과 같은 오류 메시지가 나타납니다.
Encrypted file with signed message unsupported
-
주요 GnuPG 버전: 2.4, 2.3, 2.2, 2.0, 1.4.
다른 PGP 클라이언트도 작동할 수 있지만 여기에 언급된 클라이언트만 Transfer Family로 테스트되었습니다.