Transfer Family의 SSH 및 PGP 키 관리 - AWS Transfer Family

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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 키를 만들려면
  1. macOS, Linux 또는 Unix 작동 시스템에서는 명령 터미널을 엽니다.

  2. 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
    참고

    key_name은(는) SSH 키 쌍 파일 명칭입니다.

    다음은 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 서버 엔드포인트에서 파일을 전송할 때 이 키를 사용합니다.

  3. key_name.pub 파일로 이동하여 엽니다.

  4. 텍스트를 복사하여 서비스 관리 사용자의 SSH 퍼블릭 키에 붙여넣습니다.

    1. https://console.aws.amazon.com/transfer/ 에서 AWS Transfer Family 콘솔을 연 다음 탐색 창에서 서버를 선택합니다.

    2. 서버 페이지에서 업데이트하려는 사용자가 포함된 서버의 서버 ID를 선택합니다.

    3. 퍼블릭 키를 추가할 사용자를 선택합니다.

    4. SSH 퍼블릭 키 창에서 SSH 퍼블릭 키 추가를 선택합니다.

      AWS Transfer Family 콘솔에는 선택한 사용자의 사용자 세부 정보가 표시됩니다.
    5. 생성한 퍼블릭 키 텍스트를 SSH 퍼블릭 키 텍스트 상자에 붙여넣은 다음 키 추가를 선택합니다.

      공개 키를 추가하기 위한 Add key 페이지를 보여주는 AWS Transfer Family 콘솔.

      새 키는 SSH 퍼블릭 키 창에 나열됩니다.

      AWS Transfer Family 콘솔, 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

Console
콘솔에서 키 로테이션을 수행하려면
  1. https://console.aws.amazon.com/transfer/ 에서 AWS Transfer Family 콘솔을 엽니다.

  2. 서버 페이지로 이동합니다.

  3. 서버 ID 열에서 식별자를 선택하여 서버 세부 정보 페이지를 표시합니다.

  4. 사용자에서 SSH 퍼블릭 키를 교체하려는 사용자의 확인란을 선택한 다음 작업을 선택하고 키 추가를 선택하여 키 추가 페이지를 확인합니다.

    또는

    사용자 세부 정보 페이지를 보려면 사용자 이름을 선택한 다음 SSH 퍼블릭 키 추가를 선택하여 키 추가 페이지를 확인합니다.

  5. 새 SSH 퍼블릭 키를 입력하고 키 추가를 선택합니다.

    중요

    SSH 퍼블릭 키의 형식은 생성한 키 타입에 따라 다릅니다.

    • RSA 키의 경우, 그 형식은 ssh-rsa string입니다.

    • ED25519 키의 경우, 그 형식은 ssh-ed25519 string입니다.

    • ECDSA 키의 경우, 키는 생성한 키 크기에 따라 ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, 또는 ecdsa-sha2-nistp521(으)로 시작합니다. 그런 다음 다른 키 타입과 마찬가지로 시작 문자열 뒤에 string이(가) 옵니다.

    사용자 세부 정보 페이지로 돌아오면 방금 입력한 새 SSH 퍼블릭 키가 SSH 퍼블릭 키 섹션에 표시됩니다.

  6. 삭제할 보안 인증 옆의 확인란을 선택하고 삭제를 선택합니다.

  7. 단어 delete를 입력하여 삭제 작업을 확인한 다음 삭제를 선택합니다.

API
API를 사용하여 키 로테이션을 수행하려면
  1. macOS, Linux 또는 Unix 작동 시스템에서는 명령 터미널을 엽니다.

  2. 다음 명령을 입력하여 삭제하려는 SSH 키를 검색합니다. 이 명령을 사용하려면, serverID를 Transfer Family 서버의 서버 ID로 바꾸고 username를 사용자 이름으로 바꾸세요.

    aws transfer describe-user --server-id='serverID' --user-name='username'

    이 명령은 사용자에 대한 세부 정보를 반환합니다. "SshPublicKeyId": 필드 내용을 복사합니다. 이 값은 이 절차의 뒷부분에서 입력해야 합니다.

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],
  3. 다음으로, 사용자의 새 SSH 키를 가져옵니다. 프롬프트에 다음 명령을 입력합니다. 이 명령을 사용하려면 serverID를 Transfer Family 서버의 서버 ID로 바꾸고 username를 사용자 이름으로 바꾸고 public-key를 새 퍼블릭 키의 지문으로 바꾸세요.

    aws transfer import-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-body='public-key'

    이 명령이 성공하면 출력이 반환되지 않습니다.

  4. 마지막으로 다음 명령을 실행하여 이전 키를 삭제합니다. 이 명령을 사용하려면 serverID를 Transfer Family 서버의 서버 ID로 바꾸고 username를 사용자 이름으로 바꾸고 keyID-from-step-2를 이 절차의 2단계에서 복사한 키 ID 값으로 바꾸세요.

    aws transfer delete-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-id='keyID-from-step-2'
  5. (옵션) 이전 키가 더 이상 존재하지 않는지 확인하려면 2단계를 반복합니다.

PGP 키 생성 및 관리

Transfer Family가 워크플로를 통해 처리하는 파일에 프리티 굿 프라이버시(PGP) 복호화을 사용할 수 있습니다. 워크플로 단계에서 암호 해독을 사용하려면 PGP 키를 제공하십시오.

AWS 스토리지 블로그에는 Transfer Family Managed 워크플로를 사용하여 코드를 작성하지 않고 파일을 간단히 해독하는 방법, PGP를 사용한 파일 암호화 및 암호 해독 방법을 설명하는 게시물이 있습니다. AWS Transfer Family

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 아래에 저장할 수 있습니다. 여기서 server-id은(는) Transfer Family 서버의 ID입니다. Transfer Family는 워크플로를 실행하는 사용자와 user-name 일치하는 키가 없는 경우 이 기본 키를 사용합니다.

특정 사용자를 위한 키를 생성할 수 있습니다. 이 경우 암호 이름의 형식은 다음과 같습니다aws/transfer/server-id/user-name. 여기서 Transfer Family 서버의 워크플로를 실행하는 사용자와 user-name 일치합니다.

참고

사용자당 Transfer Family 서버당 최대 3개의 PGP 프라이빗 키를 저장할 수 있습니다.

복호화에 사용할 PGP 키를 구성하려면
  1. 사용 중인 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 뒷부분에서 키의 세부 정보를 입력할 때 패스프레이즈를 제공해야 합니다. 그리고 다음 단계에서 프라이빗 키를 내보내려면 동일한 이메일 주소를 제공해야 합니다.

  2. 프라이빗 키를 내보내려면 다음 명령을 실행합니다. 이 명령을 사용하려면 private.pgp를 프라이빗 키 블록을 저장할 파일 명칭으로, marymajor@example.com를 키 쌍을 생성할 때 사용한 이메일 주소로 바꾸세요.

    gpg --output private.pgp --armor --export-secret-key marymajor@example.com
  3. PGP 키를 저장하는 AWS Secrets Manager 데 사용합니다.

    1. https://console.aws.amazon.com/secretsmanager/ 에서 AWS Management Console 로그인하고 AWS Secrets Manager 콘솔을 엽니다.

    2. 왼쪽 탐색 창에서 암호를 선택합니다.

    3. 암호 페이지에서 새 암호 저장을 선택합니다.

    4. 암호 타입 선택 페이지의 암호 타입에 대해 다른 타입의 암호를 선택합니다.

    5. 키/값 쌍 섹션에서 키/값 탭을 선택합니다.

      • PGPPrivateKey를 입력합니다.

        참고

        PGPPrivateKey 문자열을 정확히 입력해야 합니다: 문자 앞이나 사이에 공백을 추가하지 마세요.

      • — 프라이빗 키의 텍스트를 값 필드에 붙여넣습니다. 이 절차의 앞부분에서 키를 내보낼 때 지정한 파일 (예: private.pgp) 에서 프라이빗 키의 텍스트를 찾을 수 있습니다. 키는 -----BEGIN PGP PRIVATE KEY BLOCK-----(으)로 시작하고 -----END PGP PRIVATE KEY BLOCK-----(으)로 끝납니다.

        참고

        텍스트 블록에는 프라이빗 키만 포함되고 퍼블릭 키는 포함되지 않는지 확인하세요.

    6. 행 추가를 선택하고 키/값 쌍 섹션에서 키/값 탭을 선택합니다.

      • PGPPassphrase를 입력합니다.

        참고

        PGPPassphrase 문자열을 정확히 입력해야 합니다: 문자 앞이나 사이에 공백을 추가하지 마세요.

      • – PGP 키 쌍을 생성할 때 사용한 패스프레이즈를 입력합니다.

      AWS Secrets Manager 콘솔에는 PGP 키를 관리하기 위해 입력한 키와 값이 표시됩니다.
      참고

      최대 3세트의 키와 패스프레이즈를 추가할 수 있습니다. 두 번째 세트를 추가하려면 새 행 두 개를 추가하고 키에 PGPPrivateKey2와(과) PGPPassphrase2를 입력한 다음 다른 프라이빗 키와 패스프레이즈를 붙여넣습니다. 세 번째 세트를 추가하려면 키 값이 PGPPrivateKey3PGPPassphrase3여야 합니다.

    7. 다음을 선택합니다.

    8. 암호 구성 페이지에 암호를 위한 명칭과 설명을 입력합니다.

      • 기본 키, 즉 모든 Transfer Family 사용자가 사용할 수 있는 키를 만들려면 다음을 입력하세요aws/transfer/server-id/@pgp-default. server-id를 복호화 단계가 있는 워크플로가 포함된 서버의 ID로 바꾸세요.

      • 특정 Transfer Family 사용자가 사용할 키를 만들려면 aws/transfer/server-id/user-name를 입력하세요. server-id를 복호화 단계가 있는 워크플로가 포함된 서버의 ID로 바꾸고 user-name를 워크플로를 실행하는 사용자 이름으로 바꾸세요. user-name은(는) Transfer Family 서버가 사용하는 ID 제공자에 저장됩니다.

    9. 다음을 선택하고 순환 구성 페이지의 기본값을 그대로 사용합니다. 그 다음 다음을 선택합니다.

    10. 검토 페이지에서 저장을 선택하여 암호를 만들고 저장합니다.

다음 스크린샷은 특정 Transfer Family 서버의 사용자 marymajor의 세부 정보를 보여줍니다. 이 예에서는 세 개의 키와 해당 패스프레이즈를 보여줍니다.

Transfer Family 서버 및 사용자를 위한 세 개의 키와 패스프레이즈가 포함된 비밀 세부 정보 페이지를 보여주는 AWS Secrets Manager 콘솔

지원되는 PGP 클라이언트

다음 클라이언트는 Transfer Family에서 테스트되었으며 PGP 키를 생성하고 워크플로를 통해 해독하려는 파일을 암호화하는 데 사용할 수 있습니다.

  • Gpg4win + Kleopatra.

    참고

    파일 서명/암호화를 선택할 때는 서명 주체 선택을 취소해야 합니다: 현재 암호화된 파일에 대한 서명은 지원하지 않습니다.

    파일 저장 및 암호화를 위한 Kleopatra 옵션. 서명 주체 옵션이 선택 해제되고 나를 위한 암호화 옵션이 선택되었습니다.

    암호화된 파일에 서명하고 암호 해독 워크플로를 사용하여 Transfer Family 서버에 업로드하려고 하면 다음과 같은 오류 메시지가 나타납니다.

    Encrypted file with signed message unsupported
  • 주요 GnuPG 버전: 2.4, 2.3, 2.2, 2.0, 1.4.

다른 PGP 클라이언트도 작동할 수 있지만 여기에 언급된 클라이언트만 Transfer Family로 테스트되었습니다.