Creazione di una connessione SSH con Amazon EC2 Instance Connect
Quando si eseguono istanze di Amazon EC2, è necessario gestirle. Il metodo tradizionale per la gestione delle macchine Linux remote consiste nel connettersi a Linux tramite SSH ed eseguire i comandi necessari, modificare i file di configurazione, ecc. Gli utenti possono accedere a Linux tramite SSH utilizzando un nome utente e una password o un nome utente e una chiave di sicurezza. Tuttavia, per connettersi alle istanze di EC2 tramite SSH, gli utenti possono utilizzare solo un nome utente e una chiave di sicurezza. Questo criterio è impostato in AWS EC2 per una maggiore sicurezza. Questo post del blog spiega come connettersi alle istanze AWS che eseguono Linux tramite SSH da macchine che eseguono Windows e Linux.
Scaricare una chiave da AWS
Quando si crea una nuova istanza di EC2 utilizzando la procedura guidata nella console di gestione AWS, al termine del processo di creazione dell’istanza di EC2 viene generata una coppia di chiavi. Una coppia di chiavi è composta da una chiave privata e una chiave pubblica. Secure Shell (SSH) è il protocollo di crittografia, e la coppia di chiavi viene utilizzata per effettuare la crittografia asimmetrica della connessione. È possibile generare una chiave pubblica utilizzando la chiave privata. Quando viene generata una coppia di chiavi per un’istanza di Amazon EC2, la chiave pubblica viene salvata nella configurazione di Linux installata sull’istanza di Amazon EC2 e la chiave privata viene scaricata dall’utente.
È necessario scaricare la chiave privata nella fase finale del processo di creazione dell’istanza di Amazon EC2 e salvarla in un luogo sicuro. Le istanze di EC2 non verranno create finché non si scarica la chiave privata. La chiave privata viene fornita in un file PEM. Tenere presente che questa è l’unica possibilità di scaricare la chiave per l’istanza di EC2 corrente.
Scarico la chiave privata e la salvo come file blog01-key.pem file.
CConnettiti all’istanza di EC2 tramite SSH Utilizzo di PuTTY
PuTTY è un client SSH gratuito che è possibile installare su Windows. È necessario convertire il file PEM scaricato in un formato file PPK, supportato da PuTTY, prima di potersi connettere ad AWS tramite SSH. Per questo motivo, è necessario utilizzare l’utilità PuTTY Key Generator (PuTTYgen), che viene installata da un unico file di installazione. È anche possibile scaricare puttygen.exe manualmente. PuTTYgen viene utilizzato per generare chiavi RSA e DSA.
Di conseguenza, ho tre file sul computer Windows da cui mi collegherò alle istanze di EC2:
blog01-key.pem
putty.exe
puttygen.exe
Questi file si trovano in “C:AWS SSH” in questo esempio.
Aprire PuTTY Key Generator (PuTTYgen) facendo clic sul file puttygen.exe o su un collegamento a questo file.
Fare clic su Caricare nella finestra PuTTYgen.
Fare clic su Seleziona tutto (*.*) e sfoglia il file PEM. Selezioniamo “C:AWS SSHblog01-key.pem“. Quindi fare clic su Aprire.
Leggere l’avviso visualizzato e premere OK.
Ora puoi vedere la stringa della tua chiave pubblica nella finestra di PuTTYgen. Usa la configurazione come mostrato nella schermata qui sotto.
Tipo di chiave da generare: RSA
Numero di bit in una chiave generata: 2048 bit
Clicca su Salva chiave privata.
Sei sicuro di voler salvare questa chiave senza una passphrase per proteggerla?
Premi Sì se sei d’accordo. Se non sei d’accordo, torna indietro e proteggi la chiave con una passphrase.
Salva la chiave privata in una ubicazione sicura. Io salvo la chiave come “C:AWS SSHAWS EC2 SSH.ppk“. Premi Salva.
How To SSH into istanze di EC2 da Windows
Controlla l’indirizzo IP pubblico della tua istanza di EC2. L’istanza deve essere in stato di esecuzione per avere un indirizzo IP pubblico. Nel mio caso, l’indirizzo IP pubblico è 52.55.222.44. Userò questo indirizzo IP per collegarmi ad AWS tramite SSH.
Aprire PuTTY in Windows. Eseguire putty.exe o il collegamento appropriato.
Andare su SSH > Auth.
Fare clic su Sfoglia e selezionare il file PPK (la chiave privata). Seleziono il file “C:AWS SSHAWS EC2 SSH.ppk” generato in precedenza in PuTTYgen.
Torna alla schermata Sessione schermata in PuTTY e inserisci l’indirizzo IP pubblico della tua istanza di EC2 nel campo Nome host (o indirizzo IP) . Assicurati che il tipo di connessione sia SSH. Inserisco 52.55.222.44, che è l’indirizzo IP della mia istanza di EC2 copiato dalla console di gestione EC2. Selezionare la porta TCP 22. Premere Aprire.
Viene visualizzato l’avviso di sicurezza. Leggere il messaggio e premere Accettare per continuare e connettersi all’istanza di EC2. Questa finestra di dialogo viene visualizzata quando ci si connette per la prima volta a una particolare macchina remota. L’impronta digitale visualizzata nel messaggio deve corrispondere all’impronta digitale dell’istanza di EC2.
Inserisci il nome utente nella finestra della console. Poiché utilizzo Ubuntu Linux sulla mia istanza di Amazon EC2, utilizzo ubuntu, che è il nome utente predefinito configurato per questa istanza implementata dall’immagine Amazon Machine Image (AMI) appropriata.
Nomi utente predefiniti per diversi tipi di AMI Linux in AWS:
- Amazon Linux 2 o Amazon Linux AMI: ec2-user
- CentOS: centos oppure ec2-user
- Debian: AMMINISTRAZIONE
- Fedora: fedora oppure ec2-user
- Red Hat Enterprise Linux (RHEL): ec2-user oppure root
- SUSE: ec2-user oppure root
- Ubuntu: ubuntu
- Oracle: ec2-user
- Bitnami: bitnami
Una volta visualizzato il prompt dei comandi di una shell Linux (in questo caso bash), è possibile eseguire comandi sulla macchina Linux remota in esecuzione su AWS. Ciò significa che hai impostato la configurazione SSH AWS EC2 corretta in PuTTY.
Trasferimento di file tramite SSH alle istanze di Amazon EC2
Ho configurato l’accesso SSH remoto AWS all’istanza di Amazon EC2 e ora posso collegarmi alle istanze AWS tramite SSH, eseguire comandi, modificare la configurazione, ecc. Tuttavia, potrebbe anche essere necessario trasferire file tramite SSH alle istanze AWS da un computer Windows o nella direzione opposta. Esistono protocolli di trasferimento file che funzionano su SSH per trasferire file in modo sicuro da un computer all’altro, ad esempio Secure File Transfer Protocol (SFTP) e Secure Copy Protocol (SCP).
Per trasferire file tramite SSH alle istanze AWS da Windows, è possibile utilizzare WinSCP, uno strumento gratuito per Windows. Si noti che scp deve essere installato sul computer Linux remoto in esecuzione su AWS.
Una volta installato WinSCP sul computer Windows, eseguire l’applicazione.
Selezionare SFTP come protocollo file e, nel campo Nome host inserire l’indirizzo IP pubblico dell’istanza di EC2 a cui ci si desidera connettere tramite SSH per trasferire i file. Inserire un nome utente per l’istanza di EC2. Nel mio esempio utilizzo 52.55.222.44 come indirizzo IP e ubuntu come nome utente.
Fare clic su Avanzate nella finestra principale di WinSCP.
Andare su SSH > Autenticazione nella finestra Impostazioni avanzate del sito . Fare clic su … nella sezione Parametri di autenticazione e seleziona la chiave privata che hai generato in precedenza in PuTTYgen. Nel mio caso, seleziono “C:AWS SSHAWS EC2 SSH.ppk“. Premere OK per salvare le impostazioni e tornare alla finestra principale di WinSCP.
Fare clic su Accedere nella finestra principale di WinSCP.
Viene visualizzato un messaggio di avvertenza, come quando ci si connette all’istanza di EC2 da PuTTY per la prima volta. Premere Sì per continuare.
Se la configurazione SSH di AWS EC2 è corretta e le impostazioni di connessione SSH sono state impostate correttamente in WinSCP, verrà visualizzata una finestra con due riquadri in stile commander. Il riquadro sinistro mostra la cartella utente del computer Windows locale, mentre quello destro mostra la cartella home dell’utente di Linux in esecuzione su AWS. È possibile trascinare i file da un riquadro all’altro e copiare, rinominare o eliminare i file sui computer locali e remoti.
Connessione ad AWS tramite SSH da Linux
A differenza di Windows, Linux dispone di un client SSH nativo. Nella console del computer Linux locale, utilizzare il comando seguente per connettersi alle istanze di EC2 che eseguono Linux tramite SSH:
ssh -i file_name.pem ubuntu@ip_address
Passare alla directory in cui si trova la chiave privata .pem l’ubicazione del file si trova su una macchina Linux. In questo esempio, utilizzo Ubuntu e ho scaricato il file blog01-key.pem su ~/Downloads/.
cd ~/Downloads/
ssh -i blog01-key.pem ubuntu@52.55.222.44
Dove ubuntu è il nome utente sulla macchina Linux remota, e 52.55.222.44 è l’indirizzo IP della macchina Linux remota.
Se esegui questo comando ora, otterrai l’errore:
Avvertenza: file della chiave privata non protetto.
I permessi per ‘blog01-key.pem’ sono troppo aperti.
È obbligatorio che la tua chiave privata non sia accessibile ad altri.
Questa chiave privata verrà ignorata. Carica chiave: autorizzazione pad.
Autorizzazione negata (chiave pubblica).
È necessario impostare autorizzazioni inferiori (più rigorose) per motivi di sicurezza.
chmod 400 ./blog-key.pem
Utilizzare 400 se le chiavi devono essere leggibili solo da voi.
Utilizzare 600 se avete bisogno che le chiavi siano leggibili e scrivibili da voi.
Ora potete connettervi alle istanze di EC2 tramite SSH da vostro computer Linux con il comando:
ssh -i blog01-key.pem ubuntu@52.55.222.44
Ora sono connesso tramite SSH a un’istanza di Amazon EC2.
Trasferimento di file tramite SSH ad Amazon EC2 in Linux
È anche possibile trasferire file tramite SSH alle istanze di Amazon EC2 utilizzando SCP in Linux. Assicurarsi di aver già stabilito una connessione SSH AWS all’istanza Linux remota da un computer Linux locale. Quindi, aprire una nuova console sul proprio computer Linux locale e connettersi all’istanza di Amazon EC2 utilizzando il comando:
scp -i /path/key_name.pem /path/file_name.txt user_name@ec2_instance_IP_address:/path_to_file
Nel mio esempio, utilizzo il comando:
scp -i ~/Downloads/blog01-key.pem ~/Downloads/file.txt ubuntu@52.55.222.44:/home/ubuntu
Il trasferimento dei file tramite SSH all’istanza AWS è stato completato con successo.
Per copiare un file nella direzione opposta (da Linux in AWS EC2 al computer Linux locale), utilizzare il comando:
scp -i /path/key_name.pem user_name@ec2_instance_IP_address:/path_to_file/my-file.txt path/my-file2.txt
Nel mio caso, utilizzo il comando:
scp -i ~/Downloads/blog01-key.pem ubuntu@52.55.222.44:/home/ubuntu/file1.txt ~/Downloads/file1-copy.txt
Come si può vedere nella schermata, il file è stato copiato correttamente. È possibile copiare i file importanti da un’istanza di Amazon EC2 al computer locale necessario ed eseguire il backup dei file. Eseguire il backup di Amazon EC2 regolarmente per evitare la perdita di dati.
Come aggiungere una nuova chiave a un’istanza AWS
È possibile creare una coppia di chiavi aggiuntiva per un’istanza di EC2 esistente per connettersi alle istanze AWS tramite SSH dopo aver creato l’istanza AWS di EC2. Potrebbe essere necessario farlo per fornire l’accesso SSH all’istanza di EC2 ad altri utenti. Se si ritiene che l’utente non abbia bisogno di connettersi tramite SSH alle istanze di EC2, è possibile eliminare la chiave pubblica dal computer Linux in esecuzione in AWS EC2 senza dover ricreare una nuova chiave al posto di quella generata al momento della creazione dell’istanza.
Aprire la console di gestione EC2 nella console di gestione AWS.
Andare su Reti & Sicurezza nel riquadro di navigazione e fare clic su Coppie di chiavi.
Tutte le coppie di chiavi esistenti vengono visualizzate in questa pagina. È possibile digitare una parte del nome di una coppia di chiavi esistente nel campo di ricerca per trovare la coppia di chiavi.
Fare clic sul pulsante Crea coppia di chiavi nell’angolo in alto a destra dell’interfaccia web per creare una nuova coppia di chiavi per un’istanza di EC2 esistente.
Selezionare .pem come formato della chiave privata se è necessario utilizzare una chiave in Linux con OpenSSH oppure selezionare .ppk se è necessario utilizzare la chiave in Windows con PuTTY. Poiché utilizzerò un computer Linux locale per collegarmi alle istanze di EC2 tramite SSH con una nuova chiave, seleziono l’opzione chiave .pem . È possibile aggiungere tag, se necessario. Premere Crea coppia di chiavi quando si è pronti a continuare.
Salvare il file scaricato in un luogo sicuro. Nel mio caso, il nome del file scaricato è blog02-temp.pem e salvo questo file nella directory Downloads nella directory home dell’utente.
Recupero di una chiave pubblica dalla nuova coppia di chiavi
Abbiamo generato una nuova coppia di chiavi nell’interfaccia web della console di gestione AWS. Ora dobbiamo generare una chiave pubblica utilizzando una chiave privata dal file scaricato .pem .
Utilizza il comando in questo formato:
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
Nel mio caso, il comando è:
ssh-keygen -y -f ~/Downloads/blog02-temp.pem
Se ricevi un errore, imposta i permessi corretti:
chmod 400 ~/Downloads/blog02-temp.pem
Se tutto è corretto, nella console viene visualizzata una chiave pubblica generata.
Copia la stringa della chiave generata e salva queste informazioni in un luogo sicuro. In questo esempio, salvo la stringa della chiave in un file di testo.
Copia la stringa chiave negli appunti.
Connettiti alle istanze di EC2 tramite SSH da tuo computer Linux locale come spiegato sopra in questo post.
Ora ci troviamo in /home/Ubuntu/ .
Apri il file di configurazione in cui sono memorizzate le chiavi pubbliche per accedere all’istanza di EC2 tramite SSH con un editor di testo:
nano ~/.ssh/authorized_keys
Il percorso completo di questo file di configurazione dipende dall’immagine Amazon Machine Image (AMI) Linux e può essere:
/home/ubuntu/.ssh/authorized_keys
/home/ec2-user/.ssh/authorized_keys
/root/.ssh/authorized_keys
Incolla la tua chiave da Windows negli appunti nella seconda riga di questo file di configurazione.
Salva le modifiche e chiudi il file.
Non chiudere la console (terminale) con la sessione SSH corrente che utilizzi per la connessione all’istanza di EC2 finché non ti sei assicurato che la seconda chiave aggiunta funzioni. In caso contrario, potresti perdere la connessione SSH se la configurazione non è corretta, senza la possibilità di connettersi alle istanze di EC2 tramite SSH. Non rimanere bloccato in caso di errore!
Apri un altro terminale sul tuo computer Linux locale e prova a connetterti all’istanza utilizzando una nuova chiave. Vado alla directory in cui si trova l’ubicazione dei miei file chiave .pem .
cd ~/Downloads/
Connettiti all’istanza di EC2 che esegue Linux in AWS da tuo computer Linux locale nella nuova console definendo la nuova chiave privata (blog02-temp.pem in questo caso).
ssh -i blog02-temp.pem ubuntu@52.55.222.44
La connessione SSH AWS è stata stabilita correttamente con la nuova chiave. Ora è possibile inviare la nuova chiave (blog02-temp.pem) a un utente che deve stabilire la connessione SSH AWS. Quando sarà necessario disabilitare l’accesso SSH a questa istanza di EC2 per l’utente, eliminare la seconda riga da .ssh/authorized_keys sull’istanza Linux remota in esecuzione su AWS EC2. Poiché la configurazione SSH AWS con entrambe le chiavi (la prima chiave generata durante la creazione dell’istanza di EC2 e la seconda chiave creata in precedenza per consentire a un altro utente di connettersi ad AWS EC2) funziona correttamente, è possibile chiudere le finestre del terminale SSH.
Se elimini una coppia di chiavi in Reti & Sicurezza > Key pairs Da la console di gestione EC2 (il luogo in cui abbiamo creato la seconda chiave nell’interfaccia web della console di gestione AWS), le chiavi all’interno delle istanze di EC2 non vengono eliminate.
Cosa fare se si perde la chiave SSH AWS EC2
Se si perde la chiave privata per la connessione a una istanza di EC2 (generata durante la creazione di una nuova istanza di EC2), non sarà più possibile connettersi all’istanza appropriata. Non è possibile generare una nuova chiave e inserirla nel file di configurazione SSH AWS nell’istanza di EC2 corrente. In questa situazione, è possibile utilizzare un’istanza di EC2 temporanea a cui si ha accesso SSH. Provare il seguente flusso di lavoro per ripristinare l’accesso SSH AWS EC2 all’istanza.
- Interrompere l’istanza di EC2 originale, la chiave privata SSH AWS che è stata persa.
- Verificare le informazioni sui volumi EBS collegati all’istanza di EC2. È necessario identificare il volume EBS che contiene il volume root / montato su Linux. Annotare l’ID volume di questo volume EBS.
- Avviare un’istanza temporanea in AWS EC2. È possibile utilizzare l’istanza che esegue la stessa distribuzione Linux installata sulla macchina originale (l’AMI dello stesso tipo).
- Generare una nuova coppia di chiavi collegandosi ad AWS nella console di gestione AWS. Salvare la chiave privata e preparare la chiave pubblica. È necessario generare la stringa della chiave pubblica per riparare la configurazione SSH AWS memorizzata sul volume root utilizzato dall’istanza originale.
- Creare una directory in Linux in esecuzione sull’istanza di EC2 temporanea e montare il volume EBS che contiene la partizione root / dell’istanza di EC2 originale sull’istanza di EC2 temporanea. Individuare il volume EBS necessario in base all’ID volume annotato in precedenza.
- Aprire il file di configurazione della chiave SSH AWS (che si trovava in una directory come /home/Ubuntu/.ssh/authorized_keys). Il percorso cambia a seconda della directory in cui hai montato la partizione root dell’istanza di EC2 originale. Aggiungi la stringa della nuova chiave pubblica al file di configurazione della chiave SSH AWS.
- Smonta il volume EBS utilizzato dall’istanza di EC2 originale collegata all’istanza di EC2 temporanea.
- Montare il volume EBS che contiene il file di configurazione della chiave SSH AWS modificato sull’istanza di EC2 originale.
- Accendere l’istanza di EC2 originale e connettersi a questa istanza utilizzando una nuova coppia di chiavi tramite SSH.
Utilizzo di EC2 Instance Connect
La gestione delle chiavi è una parte importante dell’amministrazione AWS perché è necessario conservare le chiavi SSH AWS EC2 per accedere alle istanze di EC2 in un luogo sicuro e anche evitare di perderle. La creazione e l’eliminazione delle chiavi necessarie per l’accesso temporaneo di altri utenti può essere un’attività di routine con un numero elevato di utenti. Per questo motivo, Amazon offre la possibilità di connettersi alle istanze di Amazon EC2 tramite SSH utilizzando EC2 Instance Connect. Questa funzione consente di automatizzare la gestione delle chiavi SSH per la connessione alle istanze di Amazon EC2
L’idea di utilizzare EC2 Instance Connect è quella di creare criteri Identity & Access Management (IAM) per controllare centralmente l’accesso SSH AWS alle istanze di EC2 senza la necessità di gestire (creare, condividere, eliminare) manualmente le chiavi SSH. Infine, gli utenti possono utilizzare un client SSH, un client basato su browser della console AWS EC2 o Amazon EC2 Instance Connect CLI per connettersi alle istanze di Amazon EC2.
L’API Amazon Instance Connect invia una chiave SSH pubblica monouso ai metadati dell’istanza per 60 secondi. Il criterio IAM associato all’utente IAM autorizza l’utente. L’utente deve connettersi all’istanza di Amazon EC2 utilizzando questa chiave entro 60 secondi. Dopo la scadenza della chiave, è necessario utilizzarne una nuova.
Amazon Instance Connect ha supporto per le istanze di Amazon EC2 su cui sono installati Ubuntu 16 (o versioni successive) e Amazon Linux 2. Amazon Instance Connect deve essere installato sull’istanza di Amazon EC2 Linux. Un altro prerequisito è l’installazione di AWS CLI sulla macchina Linux remota in esecuzione su AWS.
Dopo l’installazione, EC2 Instance Connect esegue lo script che scrive i dati in questi parametri nel file di configurazione (/etc/ssh/sshd_config) del demone del server SSH:
AuthorizedKeysCommand
AuthorizedKeysCommandUser
L’aggiornamento AuthorizedKeysCommand viene utilizzato per leggere le chiavi SSH pubbliche AWS EC2 dai metadati dell’istanza EC2. Se sono già stati inseriti valori personalizzati per questi parametri, Instance Connect non li aggiorna (sovrascrive), ma in questo caso non è possibile utilizzare la funzione.
È necessario creare un file di configurazione in formato JSON. Aprire IAM Console, quindi andare su Policies e premere Create Policy. In alternativa, è possibile utilizzare l’interfaccia della riga di comando sul proprio computer Linux con AWS CLI installato. Di seguito è riportato un esempio di configurazione. Questo criterio è in grado di identificare le istanze tramite l’ID istanza per consentire l’accesso.
{
"Version": "2021-10-17",
"Statcodeent": [
{
"Effect": "Allow",
"Action": "ec2-instance-connect:SendSSHPublicKey",
"Resource": [
"arn:aws:ec2:region:account-id:instance/i-00000000000000000",
"arn:aws:ec2:region:account-id:instance/i-00000000000000001"
],
"Condition": {
"StringEquals": {
"ec2:osuser": "ami-username"
}
}
},
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
}
]
}
Quindi è necessario attivare il criterio. Il comando AWS CLI per attivare il criterio sarà simile al seguente:
aws iam create-policy --policy-name my-policy --policy-document file://JSON-file-name
È possibile allegare il criterio attivato all’utente appropriato.
aws iam attach-user-policy --policy-arn arn:aws:iam::account-id:policy/my-policy --user-name IAM-friendly-name
Per connettersi all’istanza di Amazon EC2 in Amazon Console EC2, selezionare l’istanza di Amazon EC2 necessaria e premere il pulsante Connetti . Nella pagina Connettiti all’istanza , selezionare la scheda scheda Connetti istanza di EC2 e premi Connetti.
Conclusione
La connessione alle istanze di EC2 di AWS tramite SSH è una parte importante del processo di amministrazione di AWS EC2. Questo post del blog ha spiegato come configurare AWS EC2 SSH e connettersi alle istanze di EC2 che eseguono Linux da macchine Linux e Windows locali. Per stabilire la connessione SSH con le istanze di EC2 è necessario utilizzare coppie di chiavi. Una chiave pubblica è memorizzata nella configurazione di Linux in esecuzione su AWS EC2 e una chiave privata è utilizzata da un client SSH locale installato sul computer dell’utente. Conservare le chiavi in un luogo sicuro ed eseguire regolarmente dei backup per evitare la perdita di dati, tempo e costi.






























