Come faccio a usare un tunnel SSH tramite AWS Systems Manager per accedere alle mie risorse VPC private?

5 minuti di lettura
0

Desidero utilizzare un tunnel SSH tramite AWS Systems Manager per accedere alle mie risorse VPC private. In che modo posso farlo?

Breve descrizione

Per creare un tunnel SSH, puoi utilizzare Session Manager, una funzionalità di AWS Systems Manager che ti consente di utilizzare il port forwarding per host remoti. Questa funzionalità è supportata nelle versioni 3.1.1374.0 e successive di SSM Agent. Il port forwarding è un'alternativa ai passaggi seguenti. Per ulteriori informazioni sul port forwarding degli host remoti, consulta Avvio di una sessione.

Session Manager utilizza l'infrastruttura Systems Manager per creare una sessione simile a SSH con un'istanza. Session Manager effettua il tunneling di connessioni SSH reali, consentendoti di collegarti a un'altra risorsa all'interno del tuo cloud privato virtuale (VPC) direttamente dal tuo computer locale. Un'istanza gestita che crei funge da host bastione, o gateway, per le tue risorse AWS.

I vantaggi di questa configurazione sono:

  • Maggiore sicurezza: questa configurazione utilizza solo un'istanza Amazon Elastic Compute Cloud (Amazon EC2) (l'host bastione) e collega la porta 443 in uscita all'infrastruttura Systems Manager. Ciò consente di utilizzare Session Manager senza alcuna connessione in entrata. La risorsa locale deve consentire il traffico in entrata solo dall'istanza che funge da host bastione. Pertanto, non è necessario aprire pubblicamente alcuna regola in entrata.
  • Facilità d'uso: puoi accedere alle risorse del tuo VPC privato direttamente dal tuo computer locale.

Nota: per istruzioni su come accedere alle istanze EC2 con un terminale o un singolo port forwarding utilizzando Systems Manager, consulta Configurazione di Session Manager.

Prerequisiti

Completa i prerequisiti del Session Manager

Installa il plugin Session Manager per l'Interfaccia della linea di comando AWS (AWS CLI)

Consenti le connessioni SSH tramite Session Manager e assicurati che i requisiti di connessione SSH siano soddisfatti.

Nota: è necessario avere installato quanto segue per utilizzare la funzionalità SSH:

  1. SSM Agent v2.3.672.0 o versione successiva.

  2. Plugin Session Manager v1.1.23 o versione successiva sul tuo computer locale.

  3. AWS CLI v1.16.12 o versione successiva sul tuo computer locale.

Risoluzione

Per avviare il tunnel SSH utilizzando Session Manager, segui questi passaggi:

Nota: se ricevi errori durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

  1. Per avviare il tunnel SSH, esegui il seguente comando:
ssh -i /path/my-key-pair.pem username@instance-id -L localport:targethost:destport
  1. Per testare l'accesso al tunnel sulla porta di destinazione creata nel passaggio 1, esegui il seguente comando:
telnet 127.0.0.1 localport

Nell'esempio precedente, 127.0.0.1 e localport si traducono per accedere a targethost:destport.

Configurazioni di esempio

Scenario 1

Crea un tunnel dal tuo computer locale per accedere a un database MySQL in esecuzione su un'istanza EC2 utilizzando l'host SSM come host bastione.

Risorse utilizzate

instance1: Un'istanza EC2 che funge da host bastione e gestita da AWS Systems Manager.

    Hostname = ec2-198-51-100-1.compute-1.amazonaws.com Instance id = i-0123456789abcdefa

instance2: Un'istanza EC2 che esegue il database MySQL sulla porta predefinita 3306.

    Hostname = ec2-198-51-100-2.compute-1.amazonaws.com

Istruzioni

  1. Da un computer locale (ad esempio, il tuo laptop), esegui il comando SSH per connetterti a instance1, utilizzando SSH basato su Session Manager. Questo comando crea un tunnel verso la porta 3306 su instance2 e lo presenta nel computer locale sulla porta 9090.
ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 9090:ec2-198-51-100-2.compute-1.amazonaws.com:3306

Nota: nell'esempio precedente, la porta 9090 è disponibile sul computer locale.

  1. Dal computer locale, accedi al database utilizzando la porta disponibile utilizzata nel passaggio 1 (in questo esempio, 9090).
mysql -u user -h 127.0.0.1 -P 9090 -p password

Nota: qualsiasi gruppo di sicurezza, lista di controllo degli accessi alla rete (ACL), regole di sicurezza o software di sicurezza di terze parti presenti su instance2 deve consentire il traffico proveniente da instance1. Nell'esempio precedente, instance2 deve consentire l'accesso alla porta 3306 da instance1.

Scenario 2

Crea tre tunnel su una singola connessione SSH dal tuo computer locale per:

  • connetterti alla porta SSH in instance1
  • accedere a un database MySQL in un'istanza RDS
  • accedere a un server web in instance3

Risorse utilizzate

instance1: Un'istanza EC2 che funge da host bastione e gestita da AWS Systems Manager.

    Hostname = ec2-198-51-100-1.compute-1.amazonaws.com Instance id = i-0123456789abcdefa

Istanza RDS: un'istanza RDS di MySQL situata in una sottorete privata.

    Hostname = DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com

instance3: un'istanza EC2 situata in una sottorete privata

    Hostname = ec2-198-51-100-3.compute-3.amazonaws.com

Istruzioni

  1. Avvia la sessione con tre tunnel usando il comando SSH.

Nota: nel comando sono presenti tre invocazioni di tunnel separate.

ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 8080:ec2-198-51-100-1.compute-1.amazonaws.com:22 -L 9090:DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com:3306 -L 9091:ec2-198-51-100-3.compute-1.amazonaws.com:80

Nota: nell'esempio precedente, le porte 8080, 9090 e 9091 sono disponibili sul computer locale.

  1. Accedi a SSH dal computer locale a instance1. La porta locale 8080 collega la porta SSH (22) su instance1. La coppia di chiavi e il nome utente si riferiscono all'istanza su cui stai effettuando il tunneling (instance1, in questo esempio).
ssh -i /path/key-pair_instance1.pem username_of_instance1@127.0.0.1 -p 8080
  1. Accedi al database sull'istanza RDS. La porta locale 9090 collega la porta 3306 sull'istanza RDS. È possibile utilizzare MySQL workbench, che consente di accedere al server DB utilizzando la GUI, con 127.0.0.1 come nome host e 9090 come porta. Oppure, esegui il seguente comando nel prompt dei comandi della shell (interprete di comandi):
mysql -u user -h 127.0.0.1 -P 9090 -p password
  1. Dal computer locale, per accedere al sito web su instance3, apri il browser e accedi al sito web.
http://127.0.0.1:9091

Importante: qualsiasi gruppo di sicurezza, ACL di rete, regola di sicurezza o software di sicurezza di terze parti esistente sull'istanza RDS e su instance3 deve consentire il traffico proveniente da instance1. Nell'esempio precedente, instance3 deve consentire l'accesso alla porta 80 da instance1.


Informazioni correlate

Configurazione automatica di Session Manager senza un gateway Internet

session-manager-without-igw

Connettiti in modo sicuro a un'istanza di database Amazon RDS o Amazon EC2 da remoto con la tua GUI preferita

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa