Podałem już jedną odpowiedź, która korzysta z woluminów EBS, aby uzyskać dostęp do klucza publicznego ssh, ale oto inny sposób, aby uzyskać do niego dostęp, uruchamiając tymczasową instancję EC2 za pomocą skryptu danych użytkownika, który wysyła klucz publiczny do wyjścia konsoli. Oto kroki:
Zapisz następujący kod w pliku o nazwie output-ssh-key.userdata
na komputerze lokalnym. NIE URUCHAMIAJ TEGO POLECENIA LOKALNIE!
#!/bin/bash -ex
exec> >(tee /var/log/user-data.log|logger -t user -s 2>/dev/console) 2>&1
adminkey=$(GET instance-data/latest/meta-data/public-keys/ |
perl -ne 'print $1 if /^0=[^a-z0-9]*([-.@\w]*)/i')
cat <<EOF
SSHKEY:========================================================================
SSHKEY:HERE IS YOUR PUBLIC SSH KEY FOR KEYPAIR "$adminkey":
SSHKEY:$(cat /home/ubuntu/.ssh/authorized_keys)
SSHKEY:========================================================================
SSHKEY:Halting in 50min ($(date --date='+50 minutes' +"%Y-%m-%d %H:%M UTC"))
EOF
sleep 3000
halt
Uruchom zwykłą instancję Ubuntu 10.04 LTS z powyższym plikiem jako skrypt danych użytkownika. Podaj parę kluczy, dla której chcesz odzyskać publiczny klucz ssh:
ec2-run-instances \
--key YOURKEYPAIRHERE \
--instance-type t1.micro \
--instance-initiated-shutdown-behavior terminate \
--user-data-file output-ssh-key.userdata \
ami-ab36fbc2
Żądaj wyjścia konsoli od instancji, dopóki nie wyświetli się twój publiczny klucz ssh. Podaj identyfikator instancji zwrócony z komendy run-instances:
ec2-get-console-output YOURINSTANCEID | grep SSHKEY: | cut -f3- -d:
W ciągu 2-10 minut otrzymasz taki wynik:
========================================================================
HERE IS YOUR PUBLIC SSH KEY FOR KEYPAIR "erich":
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6rn8cl41CkzaH4ZBhczOJZaR4xBBDI1Kelc2ivzVvCB
THcdJRWpDd5I5hY5W9qke9Tm4fH3KaUVndlcP0ORGvS3PAL4lTpkS4D4goMEFrwMO8BG0NoE8sf2U/7g
aUkdcrDC7jzKYdwleRCI3uibNXiSdeG6RotClAAp7pMflDVp5WjjECDZ+8Jzs2wasdTwQYPhiWSiNcfb
fS97QdtROf0AcoPWElZAgmabaDFBlvvzcqxQRjNp/zbpkFHZBSKp+Sm4+WsRuLu6TDe9lb2Ps0xvBp1F
THlJRUVKP2yeZbVioKnOsXcjLfoJ9TEL7EMnPYinBMIE3kAYw3FzZZFeX3Q== erich
========================================================================
Halting in 50min (2011-12-20 05:58 UTC)
Tymczasowa instancja zakończy się automatycznie w ciągu niecałej godziny, ale możesz ją rozwiązać samodzielnie, jeśli chcesz mieć pewność, że nie obciążą Cię więcej niż dwa centy, których uruchomienie będzie kosztować.