Bạn không thể áp dụng một cặp khóa cho một trường hợp đang chạy. Bạn chỉ có thể sử dụng cặp khóa mới để khởi chạy một thể hiện mới.
Để khôi phục, nếu đó là AMI khởi động EBS, bạn có thể dừng nó, tạo ảnh chụp nhanh âm lượng. Tạo một khối lượng mới dựa trên nó. Và có thể sử dụng nó trở lại để bắt đầu phiên bản cũ, tạo một hình ảnh mới hoặc khôi phục dữ liệu.
Mặc dù dữ liệu lưu trữ phù du sẽ bị mất.
Do sự phổ biến của câu hỏi và câu trả lời này, tôi muốn nắm bắt thông tin trong liên kết mà Rodney đăng trên bình luận của mình.
Tín dụng cho Eric Hammond cho thông tin này .
Sửa các tệp trên Khối lượng EBS gốc của Trường hợp EC2
Bạn có thể kiểm tra và chỉnh sửa các tệp trên ổ EBS gốc trên phiên bản EC2 ngay cả khi bạn đang ở trong tình huống mà bạn cho là tình huống thảm hại như:
- Bạn bị mất khóa ssh hoặc quên mật khẩu
- Bạn đã mắc lỗi chỉnh sửa tệp / etc / sudoers và không thể truy cập root bằng sudo để sửa nó
- Ví dụ chạy dài của bạn bị treo vì một số lý do, không thể liên lạc được và không khởi động đúng cách
- Bạn cần khôi phục các tập tin khỏi thể hiện nhưng không thể truy cập vào nó
Trên máy tính vật lý đang ngồi ở bàn làm việc, bạn có thể chỉ cần khởi động hệ thống bằng đĩa CD hoặc USB, gắn ổ cứng, kiểm tra và sửa các tệp, sau đó khởi động lại máy tính để hoạt động trở lại.
Tuy nhiên, một ví dụ EC2 từ xa có vẻ xa vời và không thể truy cập khi bạn ở trong một trong những tình huống này. May mắn thay, AWS cung cấp cho chúng tôi sức mạnh và tính linh hoạt để có thể khôi phục một hệ thống như thế này, miễn là chúng tôi đang chạy các phiên bản khởi động EBS chứ không phải lưu trữ thể hiện.
Cách tiếp cận trên EC2 có phần giống với giải pháp vật lý, nhưng chúng tôi sẽ di chuyển và gắn ổ cứng cứng bị lỗi cứng (khối lượng EBS gốc) vào một phiên bản khác, sửa nó, sau đó di chuyển nó trở lại.
Trong một số trường hợp, có thể dễ dàng bắt đầu một phiên bản EC2 mới và loại bỏ trường hợp xấu, nhưng nếu bạn thực sự muốn sửa các tệp của mình, đây là cách tiếp cận hiệu quả với nhiều người:
Thiết lập
Xác định thể hiện ban đầu (A) và âm lượng chứa âm lượng EBS gốc bị hỏng với các tệp bạn muốn xem và chỉnh sửa.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Xác định phiên bản EC2 thứ hai (B) mà bạn sẽ sử dụng để sửa các tệp trên ổ đĩa EBS gốc. Trường hợp này phải được chạy trong cùng vùng khả dụng với thể hiện A để nó có thể có âm lượng EBS được gắn vào nó. Nếu bạn không có phiên bản nào đang chạy, hãy bắt đầu một phiên bản tạm thời.
instance_b=i-YYYYYYYY
Dừng phiên bản A bị hỏng (chờ cho đến khi dừng hoàn toàn), tách âm lượng EBS gốc khỏi phiên bản (chờ để tách ra), sau đó gắn âm lượng vào phiên bản B trên thiết bị không sử dụng.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh đến ví dụ B và gắn âm lượng để bạn có thể truy cập hệ thống tệp của nó.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Sửa nó
Tại thời điểm này, toàn bộ hệ thống tệp gốc của bạn từ phiên bản A có sẵn để xem và chỉnh sửa trong / vol-a trên ví dụ B. Ví dụ: bạn có thể muốn:
- Đặt các khóa ssh chính xác trong /vol-a/home/ubfox/.ssh/authorized_keys
- Chỉnh sửa và sửa lỗi / vol-a / etc / sudoers
- Tìm thông báo lỗi trong / vol-a / var / log / syslog
- Sao chép các tập tin quan trọng ra khỏi / vol-a /.
Lưu ý: Các uids trên hai trường hợp có thể không giống nhau, vì vậy hãy cẩn thận nếu bạn đang tạo, chỉnh sửa hoặc sao chép các tệp thuộc về người dùng không root. Ví dụ: người dùng mysql của bạn trong trường hợp A có thể có cùng UID với người dùng postfix của bạn trong trường hợp B, điều này có thể gây ra sự cố nếu bạn chọn các tệp có một tên và sau đó di chuyển âm lượng trở lại A.
Gói (lại
Sau khi bạn hoàn thành và bạn hài lòng với các tệp trong / vol-a, hãy ngắt kết nối hệ thống tệp (vẫn trong trường hợp-B):
sudo umount /vol-a
sudo rmdir /vol-a
Bây giờ, hãy quay lại hệ thống của bạn với các công cụ ec2-api, tiếp tục di chuyển âm lượng EBS trở về nhà trên phiên bản A ban đầu và bắt đầu lại phiên bản:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
Hy vọng rằng, bạn đã khắc phục sự cố, ví dụ A xuất hiện tốt và bạn có thể hoàn thành những gì bạn đặt ra ban đầu. Nếu không, bạn có thể cần tiếp tục lặp lại các bước này cho đến khi bạn làm việc.
Lưu ý: Nếu bạn có địa chỉ IP đàn hồi được gán cho phiên bản A khi bạn dừng địa chỉ đó, bạn sẽ cần liên kết lại địa chỉ đó sau khi khởi động lại.
Nhớ lại! Nếu phiên bản B của bạn tạm thời được bắt đầu chỉ cho quá trình này, đừng quên chấm dứt ngay bây giờ.
ssh-add
nên làm những gì bạn cần