Non è possibile applicare una coppia di chiavi a un'istanza in esecuzione. È possibile utilizzare la nuova coppia di chiavi solo per avviare una nuova istanza.
Per il ripristino, se si tratta di un AMI di avvio EBS, è possibile interromperlo, creare un'istantanea del volume. Crea un nuovo volume basato su di esso. Ed essere in grado di riutilizzarlo per avviare la vecchia istanza, creare una nuova immagine o recuperare i dati.
Anche se i dati nella memoria temporanea andranno persi.
A causa della popolarità di questa domanda e risposta, volevo catturare le informazioni nel link che Rodney ha pubblicato sul suo commento.
Il merito va a Eric Hammond per queste informazioni .
Correzione di file sul volume EBS radice di un'istanza EC2
È possibile esaminare e modificare i file sul volume EBS di root in un'istanza EC2 anche se ci si trova in una situazione considerata disastrosa come:
- Hai perso la chiave ssh o hai dimenticato la password
- Hai fatto un errore durante la modifica del file / etc / sudoers e non puoi più accedere alla radice con sudo per risolverlo
- L'istanza di lunga durata viene bloccata per qualche motivo, non può essere contattata e non si avvia correttamente
- È necessario ripristinare i file dall'istanza ma non è possibile accedervi
Su un computer fisico seduto alla scrivania, è possibile semplicemente avviare il sistema con un CD o una chiavetta USB, montare il disco rigido, estrarre e riparare i file, quindi riavviare il computer per tornare al lavoro.
Un'istanza EC2 remota, tuttavia, sembra distante e inaccessibile quando ci si trova in una di queste situazioni. Fortunatamente, AWS ci offre la potenza e la flessibilità per poter ripristinare un sistema come questo, a condizione che stiamo eseguendo istanze di avvio EBS e non un archivio di istanze.
L'approccio su EC2 è in qualche modo simile alla soluzione fisica, ma stiamo andando a spostare e montare il "disco rigido" difettoso (volume di root EBS) su un'istanza diversa, ripararlo, quindi spostarlo indietro.
In alcune situazioni, potrebbe essere semplicemente più semplice avviare una nuova istanza EC2 e eliminare quella cattiva, ma se vuoi davvero riparare i tuoi file, ecco l'approccio che ha funzionato per molti:
Impostare
Identificare l'istanza originale (A) e il volume che contiene il volume EBS radice rotto con i file che si desidera visualizzare e modificare.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Identificare la seconda istanza EC2 (B) che verrà utilizzata per correggere i file sul volume EBS originale. Questa istanza deve essere in esecuzione nella stessa zona di disponibilità dell'istanza A in modo che possa essere collegato al volume EBS. Se non hai già un'istanza in esecuzione, avviane una temporanea.
instance_b=i-YYYYYYYY
Arrestare l'istanza interrotta A (in attesa che si arresti completamente), scollegare il volume EBS radice dall'istanza (in attesa che venga staccato), quindi collegare il volume all'istanza B su un dispositivo non utilizzato.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh all'istanza B e montare il volume in modo da poter accedere al suo file system.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Aggiustalo
A questo punto l'intero file system radice dall'istanza A è disponibile per la visualizzazione e la modifica in / vol-a sull'istanza B. Ad esempio, potresti voler:
- Inserisci le chiavi ssh corrette in /vol-a/home/ubuntu/.ssh/authorized_keys
- Modifica e correggi / vol-a / etc / sudoers
- Cerca i messaggi di errore in / vol-a / var / log / syslog
- Copia file importanti da / vol-a / ...
Nota: gli uid sulle due istanze potrebbero non essere identici, quindi fai attenzione se stai creando, modificando o copiando file che appartengono a utenti non root. Ad esempio, l'utente mysql sull'istanza A potrebbe avere lo stesso UID dell'utente postfix sull'istanza B, il che potrebbe causare problemi se si copiano i file con un nome e si sposta il volume su A.
Incartare
Dopo aver finito e sei soddisfatto dei file in / vol-a, smonta il file system (sempre sull'istanza-B):
sudo umount /vol-a
sudo rmdir /vol-a
Ora, di nuovo sul tuo sistema con ec2-api-tools, continua a spostare il volume EBS nella sua home sull'istanza originale A e riavvia l'istanza:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Si spera che tu abbia risolto il problema, l'istanza A si presenta bene e puoi realizzare ciò che inizialmente avevi deciso di fare. In caso contrario, potrebbe essere necessario continuare a ripetere questi passaggi fino a quando non funziona.
Nota: se un indirizzo IP elastico è stato assegnato all'istanza A quando è stato arrestato, è necessario riassociarlo dopo averlo riavviato.
Ricorda! Se la tua istanza B è stata temporaneamente avviata solo per questo processo, non dimenticare di terminarla ora.
ssh-add
dovrebbe fare quello che ti serve.