Configurare OS Login in modo che richieda i certificati SSH per le connessioni SSH


Le VM che supportano i certificati OS Login supportano le connessioni da chiavi SSH e certificati SSH. I certificati SSH sono chiavi SSH firmate da un'altra chiave attendibile, in questo caso un'autorità di certificazione gestita da OS Login. Questo documento descrive come configurare le VM OS Login in modo che richiedano certificati SSH per le connessioni SSH e blocchino le connessioni da chiavi SSH non firmate.

Quando configuri OS Login in modo che richieda certificati SSH per le connessioni alle VM, solo i certificati SSH firmati dall'autorità di certificazione sono autorizzati a connettersi alle VM; le connessioni da chiavi SSH non firmate vengono rifiutate. I certificati SSH hanno una scadenza di cinque minuti, dopodiché non possono più essere utilizzati per connettersi alle VM e deve essere generato un nuovo certificato.

Ti consigliamo di configurare OS Login in modo che richieda certificati SSH per le connessioni SSH come ulteriore livello di sicurezza contro gli utenti malintenzionati. I certificati SSH sono di breve durata e sono validi solo per una VM specifica, il che significa che se vengono compromessi, la loro superficie di attacco è notevolmente più piccola e la loro finestra di attacco è notevolmente più breve di quella delle chiavi SSH di lunga durata.

Se la tua organizzazione utilizza la federazione delle identità della forza lavoro, consulta Utilizzare la federazione delle identità della forza lavoro con OS Login per scoprire come attivare i certificati SSH per la tua organizzazione.

Prima di iniziare

  • Configura OS Login e assegna i ruoli IAM OS Login.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      1. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.

Limitazioni

  • Per utilizzare i certificati SSH, la VM a cui ti connetti deve avere OpenSSH versione 7.4 o successive.

Richiedi certificati SSH

Puoi configurare OS Login in modo che richieda i certificati SSH per tutte le connessioni SSH alle VM OS Login nel tuo progetto o per singole VM. Dopo aver configurato OS Login in modo che richieda i certificati SSH, le connessioni SSH dalla console Google Cloud e da gcloud CLI utilizzano i certificati SSH per impostazione predefinita. Se non vuoi configurare OS Login in modo che richieda i certificati, ma vuoi utilizzare i certificati per connetterti alle VM, devi connetterti utilizzando strumenti di terze parti, come descritto nella sezione Connettersi a una VM utilizzando un certificato SSH.

Richiedere certificati SSH per tutte le VM con OS Login abilitato in un progetto

Per richiedere i certificati SSH per tutte le connessioni a tutte le VM che utilizzano OS Login nel tuo progetto, utilizza la console Google Cloud o gcloud CLI.

Console

Per richiedere i certificati SSH per tutte le connessioni alle VM abilitate per OS Login, utilizza la console Google Cloud per impostare enable-oslogin e enable-oslogin-certificates su TRUE nei metadati del progetto:

  1. Vai alla pagina Metadati.

    Vai a Metadati

  2. Fai clic su Modifica.

  3. Fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin.
    2. Nel campo Valore, inserisci TRUE.
  4. Fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin-certificates.
    2. Nel campo Valore, inserisci TRUE.
  5. Fai clic su Salva.

gcloud

Per richiedere i certificati SSH per tutte le connessioni alle VM abilitate per OS Login, utilizza il comando gcloud compute project-info add-metadata per impostare enable-oslogin=TRUE e enable-oslogin-certificates=TRUE nei metadati del progetto:

gcloud compute project-info add-metadata \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Richiedere certificati SSH su una singola VM con OS Login abilitato

Per richiedere i certificati per tutte le connessioni SSH a una singola VM che utilizza OS Login, utilizza la console Google Cloud o gcloud CLI.

Console

Per richiedere i certificati SSH per tutte le connessioni a una singola VM, utilizza la consoleGoogle Cloud per impostare enable-oslogin e enable-oslogin-certificates su TRUE nei metadati dell'istanza:

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome della VM per cui vuoi richiedere i certificati SSH.

  3. Fai clic su Modifica.

  4. Nella sezione Metadati, fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin.
    2. Nel campo Valore, inserisci TRUE.
  5. Fai clic su Aggiungi elemento.

    1. Nel campo Chiave, inserisci enable-oslogin-certificates.
    2. Nel campo Valore, inserisci TRUE.
  6. Fai clic su Salva.

gcloud

Per richiedere i certificati SSH per tutte le connessioni a una singola VM, utilizza il comando gcloud compute instances add-metadata per impostare enable-oslogin=TRUE e enable-oslogin-certificates=TRUE nei metadati dell'istanza:

gcloud compute instances add-metadata VM_NAME \
    --metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE

Sostituisci VM_NAME con il nome della tua VM.

Connettiti a una VM utilizzando un certificato SSH

Dopo aver configurato OS Login in modo che richieda i certificati SSH, le connessioni SSH dalla console Google Cloud e da gcloud CLI utilizzano i certificati SSH per impostazione predefinita. Se non vuoi configurare OS Login in modo che richieda i certificati, ma vuoi utilizzare i certificati per connetterti alle VM, devi connetterti utilizzando strumenti di terze parti.

Console

Connettiti alle VM utilizzando SSH nel browser dalla consoleGoogle Cloud , procedendo nel seguente modo:

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.

    SSH button next to instance name.

gcloud

Utilizza il comando gcloud beta compute ssh per connetterti a una VM utilizzando un certificato:

gcloud beta compute ssh VM_NAME

Sostituisci VM_NAME con il nome della VM a cui vuoi connetterti.

Strumenti di terze parti

Per utilizzare un certificato SSH con un client SSH di terze parti:

  1. Crea una chiave SSH se non ne hai già una.

  2. Firma la chiave SSH pubblica utilizzando il metodo projects.locations.signSshPublicKey:

    POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey
    
    {
     "ssh_public_key": "PUBLIC_KEY"
     "compute_instance": "COMPUTE_INSTANCE",
     "service_account": "SERVICE_ACCOUNT"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto del progetto che contiene la VM a cui vuoi connetterti
    • LOCATION: la regione in cui si trova la VM a cui vuoi connetterti
    • PUBLIC_KEY: i contenuti del file della chiave pubblica SSH
    • COMPUTE_INSTANCE: l'istanza Compute Engine a cui connettersi, nel formato projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID.
    • SERVICE_ACCOUNT: il account di servizio collegato all'istanza. Elimina questo campo se all'istanza non è collegato un account di servizio.
  3. Copia il certificato SSH dall'output del metodo projects.locations.signSshPublicKey e salva i contenuti in un nuovo file.

  4. Imposta le autorizzazioni sul file del certificato SSH eseguendo il seguente comando:

    sudo chmod 600 FILE_NAME
    

    Sostituisci FILE_NAME con il nome del file.

  5. Connettiti alla VM utilizzando il seguente comando:

    ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
    

    Sostituisci quanto segue:

    • PATH_TO_PRIVATE_KEY: il percorso del file della chiave SSH privata.
    • PATH_TO_SSH_CERTIFICATE: il percorso del file del certificato SSH.
    • USERNAME: il tuo nome utente OS Login
    • EXTERNAL_IP: l'indirizzo IP esterno della VM.

Risoluzione dei problemi

Se non riesci a connetterti alle VM che hai configurato per richiedere certificati SSH, il motivo potrebbe essere uno dei seguenti:

Passaggi successivi