Gestione delle chiavi SSH e PGP in Transfer Family - AWS Transfer Family

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione delle chiavi SSH e PGP in Transfer Family

In questa sezione, puoi trovare informazioni sulle chiavi SSH, incluso come generarle e come ruotarle. Per i dettagli sull'utilizzo di Transfer Family with AWS Lambda per gestire le chiavi, consulta il post del blog Enabling user self-service key management with A AWS Transfer Family and AWS Lambda.

Nota

AWS Transfer Family accetta le chiavi RSA, ECDSA ed ED25519.

Questa sezione spiega anche come generare e gestire le chiavi Pretty Good Privacy (PGP).

Algoritmi supportati per chiavi utente e server

I seguenti algoritmi chiave sono supportati per le coppie di chiavi utente e server all'interno. AWS Transfer Family

  • Per ED25519: ssh-ed25519

  • Per RSA:

    • rsa-sha2-256

    • rsa-sha2-512

  • Per ECDSA:

    • ecdsa-sha2-nistp256

    • ecdsa-sha2-nistp384

    • ecdsa-sha2-nistp521

Nota

ssh-rsaSupportiamo SHA1 per le nostre vecchie politiche di sicurezza. Per informazioni dettagliate, vedi Algoritmi crittografici.

Genera chiavi SSH per gli utenti gestiti dal servizio

È possibile configurare il server per autenticare gli utenti utilizzando il metodo di autenticazione gestita dal servizio, in cui i nomi utente e le chiavi SSH sono archiviati all'interno del servizio. La chiave SSH pubblica dell'utente viene caricata sul server come proprietà dell'utente. Questa chiave viene utilizzata dal server come parte di un processo di autenticazione standard basato su chiavi. Ogni utente può avere più chiavi SSH pubbliche su file con un singolo server. Per i limiti al numero di chiavi che possono essere archiviate per utente, consulta AWS Transfer Family endpoint e quote in. Riferimenti generali di Amazon Web Services

In alternativa al metodo di autenticazione gestita dal servizio, puoi autenticare gli utenti utilizzando un provider di identità personalizzato oppure. AWS Directory Service for Microsoft Active Directory Per ulteriori informazioni, consulta Lavorare con provider di identità personalizzati o Utilizzo di AWS Directory Service per Microsoft Active Directory.

Un server può autenticare gli utenti solo utilizzando un metodo (servizio gestito, servizio di directory o provider di identità personalizzato) e tale metodo non può essere modificato dopo la creazione del server.

Creazione di chiavi SSH su macOS, Linux o Unix

Nei sistemi operativi macOS, Linux o Unix, si utilizza il ssh-keygen comando per creare una chiave pubblica SSH e una chiave privata SSH, nota anche come coppia di chiavi.

Per creare chiavi SSH su un sistema operativo macOS, Linux o Unix
  1. Sui sistemi operativi macOS, Linux o Unix, apri un terminale di comando.

  2. AWS Transfer Family accetta chiavi in formato RSA, ECDSA ed ED25519. Scegliete il comando appropriato in base al tipo di coppia di chiavi che state generando.

    Nota

    Negli esempi seguenti, non viene specificata una passphrase: in questo caso, lo strumento chiede di inserire la passphrase e quindi di ripeterla per verificare. La creazione di una passphrase offre una protezione migliore per la chiave privata e potrebbe anche migliorare la sicurezza generale del sistema. Non è possibile recuperare la passphrase: se la si dimentica, è necessario creare una nuova chiave.

    Tuttavia, se state generando una chiave host del server, dovete specificare una passphrase vuota, specificando l'-N ""opzione nel comando (o premendo Enter due volte quando richiesto), perché i server Transfer Family non possono richiedere una password all'avvio.

    • Per generare una coppia di chiavi RSA 4096 bit:

      ssh-keygen -t rsa -b 4096 -f key_name
    • Per generare una coppia di chiavi ECDSA a 521 bit (ECDSA ha dimensioni in bit di 256, 384 e 521):

      ssh-keygen -t ecdsa -b 521 -f key_name
    • Per generare una coppia di chiavi ED25519:

      ssh-keygen -t ed25519 -f key_name
    Nota

    key_nameè il nome del file della coppia di chiavi SSH.

    Di seguito viene illustrato un esempio dell'ssh-keygenoutput.

    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]-----+
    Nota

    Quando si esegue il comando ssh-keygen come mostrato in precedenza, le chiavi pubblica e privata vengono create come file nella directory corrente.

    La tua coppia di chiavi SSH è ora pronta per l'uso. Segui i passaggi 3 e 4 per archiviare la chiave pubblica SSH per gli utenti gestiti dal servizio. Questi utenti utilizzano le chiavi quando trasferiscono file sugli endpoint del server Transfer Family.

  3. Accedere al key_name.pub file e aprirlo.

  4. Copia il testo e incollalo nella chiave pubblica SSH per l'utente gestito dal servizio.

    1. Apri la AWS Transfer Family console all'indirizzo https://console.aws.amazon.com/transfer/, quindi seleziona Server dal pannello di navigazione.

    2. Nella pagina Server, seleziona l'ID server per il server che contiene l'utente che desideri aggiornare.

    3. Seleziona l'utente per il quale stai aggiungendo una chiave pubblica.

    4. Nel riquadro delle chiavi pubbliche SSH, scegli Aggiungi chiave pubblica SSH.

      La AWS Transfer Family console, che mostra i dettagli utente per un utente selezionato.
    5. Incolla il testo della chiave pubblica che hai generato nella casella di testo della chiave pubblica SSH, quindi scegli Aggiungi chiave.

      La AWS Transfer Family console, che mostra la pagina Aggiungi chiave per aggiungere una chiave pubblica.

      La nuova chiave è elencata nel riquadro delle chiavi pubbliche SSH.

      La AWS Transfer Family console, che mostra la chiave pubblica appena aggiunta nella sezione delle chiavi pubbliche SSH.

Creazione di chiavi SSH su Microsoft Windows

Windows utilizza un formato della coppia di chiavi SSH leggermente diverso. La chiave pubblica deve essere nel formato PUB e la chiave privata deve essere nel formato PPK. In Windows, puoi utilizzare PuTTYgen per creare una coppia di chiavi SSH nei formati appropriati. Puoi anche utilizzare PuTTYgen per convertire una chiave privata generata utilizzando ssh-keygen in un file .ppk.

Nota

Se si presenta a WinSCP un file di chiave privata non .ppk in formato, quel client offre la possibilità di convertire la chiave .ppk in formato per voi.

Per un tutorial sulla creazione di chiavi SSH utilizzando PuTTYgen su Windows, consulta il sito Web SSH.com.

Convertire una chiave pubblica SSH2 in formato PEM

AWS Transfer Family accetta solo chiavi pubbliche in formato PEM. Se hai una chiave pubblica SSH2, devi convertirla. Una chiave pubblica SSH2 ha il seguente formato:

---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20160402" AAAAB3NzaC1yc2EAAAABJQAAAgEAiL0jjDdFqK/kYThqKt7THrjABTPWvXmB3URI : : ---- END SSH2 PUBLIC KEY ----

Una chiave pubblica PEM ha il seguente formato:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAA...

Esegui il comando seguente per convertire una chiave pubblica in formato SSH2 in una chiave pubblica in formato PEM. Sostituisci ssh2-key con il nome della tua chiave SSH2 e la chiave PEM con il nome della tua chiave PEM.

ssh-keygen -i -f ssh2-key.pub > PEM-key.pub

Ruota le chiavi SSH

Per motivi di sicurezza, consigliamo la migliore pratica di ruotare le chiavi SSH. Di solito, questa rotazione viene specificata come parte di una politica di sicurezza e viene implementata in modo automatico. A seconda del livello di sicurezza, per una comunicazione altamente sensibile, una coppia di chiavi SSH potrebbe essere utilizzata una sola volta. In tal modo si elimina qualsiasi rischio causato da chiavi archiviate. Tuttavia, è molto più comune archiviare le credenziali SSH per un periodo di tempo e impostare un intervallo che non imponga un onere eccessivo agli utenti. Un intervallo di tempo di tre mesi è la norma.

Sono disponibili due metodi per eseguire la rotazione di chiavi SSH:

  • Sulla console, puoi caricare una nuova chiave pubblica SSH ed eliminare una chiave pubblica SSH esistente.

  • Utilizzando l'API, è possibile aggiornare gli utenti esistenti utilizzando l'DeleteSshPublicKeyAPI per eliminare la chiave pubblica Secure Shell (SSH) di un utente e l'ImportSshPublicKeyAPI per aggiungere una nuova chiave pubblica Secure Shell (SSH) all'account dell'utente.

Console
Per eseguire una rotazione dei tasti nella console
  1. Apri la AWS Transfer Family console all'indirizzo https://console.aws.amazon.com/transfer/.

  2. Vai alla pagina Server.

  3. Scegli l'identificatore nella colonna Server ID per visualizzare la pagina dei dettagli del server.

  4. In Utenti, seleziona la casella di controllo dell'utente di cui desideri ruotare la chiave pubblica SSH, quindi scegli Azioni, quindi scegli Aggiungi chiave per visualizzare la pagina Aggiungi chiave.

    oppure

    Scegli il nome utente per visualizzare la pagina dei dettagli dell'utente, quindi scegli Aggiungi chiave pubblica SSH per visualizzare la pagina Aggiungi chiave.

  5. Inserisci la nuova chiave pubblica SSH e scegli Aggiungi chiave.

    Importante

    Il formato della chiave pubblica SSH dipende dal tipo di chiave generata.

    • Per le chiavi RSA, il formato è. ssh-rsa string

    • Per le chiavi ED25519, il formato è. ssh-ed25519 string

    • Per le chiavi ECDSA, la chiave inizia conecdsa-sha2-nistp256, o ecdsa-sha2-nistp384ecdsa-sha2-nistp521, a seconda della dimensione della chiave generata. La stringa iniziale viene quindi seguita dastring, in modo simile agli altri tipi di chiave.

    Si torna alla pagina dei dettagli utente e la nuova chiave pubblica SSH appena inserita viene visualizzata nella sezione Chiavi pubbliche SSH.

  6. Seleziona la casella di controllo della vecchia chiave you che desideri eliminare, quindi scegli Elimina.

  7. Conferma l'operazione di eliminazione inserendo la paroladelete, quindi scegli Elimina.

API
Per eseguire una rotazione delle chiavi utilizzando l'API
  1. Sui sistemi operativi macOS, Linux o Unix, apri un terminale di comando.

  2. Recupera la chiave SSH che desideri eliminare inserendo il seguente comando. Per utilizzare questo comando, serverID sostituiscilo con l'ID del server Transfer Family e sostituiscilo username con il tuo nome utente.

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

    Il comando restituisce dettagli sull'utente. Copia il contenuto del "SshPublicKeyId": campo. Sarà necessario inserire questo valore più avanti in questa procedura.

    "SshPublicKeys": [ { "SshPublicKeyBody": "public-key", "SshPublicKeyId": "keyID", "DateImported": 1621969331.072 } ],
  3. Quindi, importa una nuova chiave SSH per il tuo utente. Al prompt , immettere il comando di seguito. Per utilizzare questo comando, sostituiscilo serverID con l'ID del server Transfer Family, sostituiscilo username con il tuo nome utente e sostituiscilo public-key con l'impronta digitale della tua nuova chiave pubblica.

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

    Se il comando ha esito positivo, non viene restituito alcun output.

  4. Infine, elimina la vecchia chiave eseguendo il comando seguente. Per utilizzare questo comando, sostituiscilo serverID con l'ID del server Transfer Family, sostituiscilo username con il tuo nome utente e keyID-from-step-2 sostituiscilo con il valore dell'ID chiave che hai copiato nel passaggio 2 di questa procedura

    aws transfer delete-ssh-public-key --server-id='serverID' --user-name='username' --ssh-public-key-id='keyID-from-step-2'
  5. (Facoltativo) Per confermare che la vecchia chiave non esiste più, ripetete il passaggio 2.

Genera e gestisci le chiavi PGP

È possibile utilizzare la decrittografia Pretty Good Privacy (PGP) con i file che Transfer Family elabora con i flussi di lavoro. Per utilizzare la decrittografia in una fase del flusso di lavoro, fornite una chiave PGP.

Il blog AWS sullo storage ha un post che descrive come decrittografare semplicemente i file senza scrivere alcun codice utilizzando i flussi di lavoro Transfer Family Managed, crittografare e decrittografare i file con PGP e. AWS Transfer Family

Genera chiavi PGP

L'operatore utilizzato per generare le chiavi PGP dipende dal sistema operativo e dalla versione del software di generazione delle chiavi in uso.

Se usi Linux o Unix, usa il programma di installazione del pacchetto per l'installazione. gpg A seconda della distribuzione Linux in uso, uno dei seguenti comandi dovrebbe funzionare per te.

sudo yum install gnupg
sudo apt-get install gnupg

Per Windows o macOS, puoi scaricare ciò che ti serve da https://gnupg.org/download/.

Dopo aver installato il software generatore di chiavi PGP, si esegue il gpg --gen-key comando gpg --full-gen-key o per generare una coppia di chiavi.

Nota

Se utilizzi la GnuPG versione 2.3.0 o successiva, devi eseguire. gpg --full-gen-key Quando viene richiesto il tipo di chiave da creare, scegli RSA o ECC. Tuttavia, se scegli ECC, assicurati di scegliere uno dei due NIST o BrainPool per la curva ellittica. Non scegliete. Curve 25519

Algoritmi supportati per le coppie di chiavi PGP

Supportiamo i seguenti algoritmi per le coppie di chiavi PGP:

  • RSA

  • Elgamal

  • ECC.:

    • NIST

    • BrainPool

Nota

Non supportiamo le chiavi CCurve25519.

gpgSottocomandi utili

Di seguito sono riportati alcuni sottocomandi utili per: gpg

  • gpg --help— Questo comando elenca le opzioni disponibili e potrebbe includere alcuni esempi.

  • gpg --list-keys— Questo comando elenca i dettagli di tutte le coppie di chiavi create.

  • gpg --fingerprint— Questo comando elenca i dettagli di tutte le coppie di chiavi, inclusa l'impronta digitale di ogni chiave.

  • gpg --export -a user-name— Questo comando esporta la parte della chiave pubblica relativa alla user-name chiave utilizzata al momento della generazione della chiave.

Gestire le chiavi PGP

Per gestire le tue chiavi PGP, usa. AWS Secrets Manager

Nota

Il tuo nome segreto include l'ID del server Transfer Family. Ciò significa che dovreste aver già identificato o creato un server prima di poter memorizzare le informazioni della chiave PGP. AWS Secrets Manager

Se desideri utilizzare una chiave e una passphrase per tutti i tuoi utenti, puoi memorizzare le informazioni sul blocco delle chiavi PGP sotto il nome segretoaws/transfer/server-id/@pgp-default, dove si server-id trova l'ID del tuo server Transfer Family. Transfer Family utilizza questa chiave predefinita se non esiste una chiave in cui user-name corrisponde all'utente che sta eseguendo il flusso di lavoro.

È possibile creare una chiave per un utente specifico. In questo caso, il formato per il nome segreto èaws/transfer/server-id/user-name, dove user-name corrisponde all'utente che esegue il flusso di lavoro per un server Transfer Family.

Nota

È possibile memorizzare un massimo di 3 chiavi private PGP, per server Transfer Family, per utente.

Per configurare le chiavi PGP da utilizzare con la decrittografia
  1. A seconda della versione di GPG che stai utilizzando, esegui uno dei seguenti comandi per generare una coppia di chiavi PGP che non utilizzi un algoritmo di crittografia Curve 25519.

    • Se utilizzi la GnuPG versione 2.3.0 o successiva, esegui il seguente comando:

      gpg --full-gen-key

      Puoi scegliere oRSA, se lo desideri, puoi scegliere ECC uno dei due NIST o BrainPool per la curva ellittica. Se gpg --gen-key invece esegui, crei una coppia di chiavi che utilizza l'algoritmo di crittografia ECC Curve 25519, che attualmente non supportiamo per le chiavi PGP.

    • Per le versioni GnuPG precedenti alla 2.3.0, puoi utilizzare il seguente comando, poiché RSA è il tipo di crittografia predefinito.

      gpg --gen-key
    Importante

    Durante il processo di generazione delle chiavi, è necessario fornire una passphrase e un indirizzo e-mail. Assicuratevi di prendere nota di questi valori. È necessario fornire la passphrase quando si inseriscono i dettagli della chiave in una fase AWS Secrets Manager successiva di questa procedura. Inoltre, è necessario fornire lo stesso indirizzo e-mail per esportare la chiave privata nel passaggio successivo.

  2. Esegui il comando seguente per esportare la chiave privata. Per utilizzare questo comando, sostituiscilo private.pgp con il nome del file in cui salvare il blocco di chiave privata e marymajor@example.com con l'indirizzo email che hai usato quando hai generato la coppia di chiavi.

    gpg --output private.pgp --armor --export-secret-key marymajor@example.com
  3. AWS Secrets Manager Utilizzatelo per memorizzare la vostra chiave PGP.

    1. Accedi AWS Management Console e apri la AWS Secrets Manager console all'indirizzo https://console.aws.amazon.com/secretsmanager/.

    2. Nel pannello di navigazione a sinistra, seleziona Segreti.

    3. Nella pagina Segreti, scegli Memorizza un nuovo segreto.

    4. Nella pagina Scegli il tipo di segreto, per Tipo segreto, seleziona Altro tipo di segreto.

    5. Nella sezione Coppie chiave/valore, scegli la scheda Chiave/valore.

      • Chiave: Invio. PGPPrivateKey

        Nota

        È necessario immettere la PGPPrivateKey stringa esattamente: non aggiungere spazi prima o tra i caratteri.

      • value — Incolla il testo della tua chiave privata nel campo del valore. È possibile trovare il testo della chiave privata nel file (ad esempio,private.pgp) specificato al momento dell'esportazione della chiave in precedenza in questa procedura. La chiave inizia con -----BEGIN PGP PRIVATE KEY BLOCK----- e finisce con-----END PGP PRIVATE KEY BLOCK-----.

        Nota

        Assicurati che il blocco di testo contenga solo la chiave privata e non contenga anche la chiave pubblica.

    6. Seleziona Aggiungi riga e nella sezione Coppie chiave/valore, scegli la scheda Chiave/valore.

      • Chiave: Invio. PGPPassphrase

        Nota

        È necessario immettere la PGPPassphrase stringa esattamente: non aggiungere spazi prima o tra i caratteri.

      • value — Inserisci la passphrase che hai usato quando hai generato la tua coppia di key pair PGP.

      La AWS Secrets Manager console, che mostra le chiavi e i valori che inserisci per gestire le tue chiavi PGP.
      Nota

      Puoi aggiungere fino a 3 set di chiavi e passphrase. Per aggiungere un secondo set, aggiungi due nuove righe e inserisci e PGPPassphrase2 per le chiavi PGPPrivateKey2 e incolla un'altra chiave privata e passphrase. Per aggiungere un terzo set, i valori chiave devono essere e. PGPPrivateKey3 PGPPassphrase3

    7. Seleziona Successivo.

    8. Nella pagina Configura segreto, inserisci un nome e una descrizione per il tuo segreto.

      • Se stai creando una chiave predefinita, ovvero una chiave che può essere utilizzata da qualsiasi utente di Transfer Family, inserisciaws/transfer/server-id/@pgp-default. Sostituiscila server-id con l'ID del server che contiene il flusso di lavoro che prevede una fase di decrittografia.

      • Se stai creando una chiave che deve essere utilizzata da un utente Transfer Family specifico, inserisciaws/transfer/server-id/user-name. Sostituiscilo server-id con l'ID del server che contiene il flusso di lavoro con una fase di decrittografia e sostituiscilo user-name con il nome dell'utente che esegue il flusso di lavoro. user-nameViene memorizzato nel provider di identità utilizzato dal server Transfer Family.

    9. Scegli Avanti e accetta le impostazioni predefinite nella pagina Configura rotazione. Quindi scegli Successivo.

    10. Nella pagina Revisione, scegli Store per creare e archiviare il segreto.

La schermata seguente mostra i dettagli dell'utente marymajor per uno specifico server Transfer Family. Questo esempio mostra tre tasti e le relative passphrase corrispondenti.

La AWS Secrets Manager console, che mostra la pagina dei dettagli segreta con tre chiavi e passphrase per un server e un utente Transfer Family.

Client PGP supportati

I seguenti client sono stati testati con Transfer Family e possono essere utilizzati per generare chiavi PGP e per crittografare file che si intende decrittografare con un flusso di lavoro.

  • GPG4win+ Kleopatra.

    Nota

    Quando selezioni Firma/Crittografa i file, assicurati di deselezionare l'opzione Sign as: attualmente non supportiamo la firma per i file criptati.

    Le opzioni di Kleopatra per firmare e crittografare i file. L'opzione Sign as è deselezionata e l'opzione Encrypt for me è selezionata.

    Se firmi il file crittografato e tenti di caricarlo su un server Transfer Family con un flusso di lavoro di decrittografia, ricevi il seguente errore:

    Encrypted file with signed message unsupported
  • Principali versioni di GnuPG: 2.4, 2.3, 2.2, 2.0 e 1.4.

Nota che potrebbero funzionare anche altri client PGP, ma solo i client qui menzionati sono stati testati con Transfer Family.