Ví dụ SSH đến Elastic Beanstalk


304

Tôi vừa đăng ký cung cấp dịch vụ Bean Beanalk mới của Amazon. Những gì tôi không thể tìm ra là làm thế nào để SSH vào một ví dụ Beanstalk. Tôi không có khóa riêng vì Beanstalk đã tạo ra ví dụ thay cho tôi.


Vì vậy, một khi cuối cùng tôi đã đăng nhập, làm thế nào để tôi vào thư mục nơi tôi đẩy git repo của tôi đến?
Tiến hóa

Có vẻ như các câu trả lời ở trên có phần ngày. Amazon có một tài liệu tốt về cách làm điều đó ngay bây giờ. Thực hiện theo các gợi ý ở trên về cách tạo cặp chìa khóa. Sau đó, hãy làm theo: <br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/ay Chúc may mắn!
Jordan Michael Rushing

4
Chà, nếu bạn đang sử dụng v3 mới của ELB CLI, bạn có thể làmeb ssh
Sharoon Thomas

Câu trả lời:


491

Tôi thấy đó là một quá trình gồm 2 bước. Điều này giả định rằng bạn đã thiết lập một cặp khóa để truy cập các thể hiện EC2 trong khu vực có liên quan.

Cấu hình nhóm bảo mật

  1. Trong bảng điều khiển AWS, mở tab EC2.
  2. Chọn khu vực liên quan và nhấp vào Nhóm bảo mật.
  3. Bạn nên có một elasticbeanstalk-defaultnhóm bảo mật nếu bạn đã khởi chạy một thể hiện của Bean Beanalk trong khu vực đó.
  4. Chỉnh sửa nhóm bảo mật để thêm quy tắc truy cập SSH. Dưới đây sẽ khóa nó xuống chỉ cho phép xâm nhập từ một địa chỉ IP cụ thể.

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Định cấu hình môi trường của Ứng dụng Bean Beanalk của bạn

  1. Nếu bạn chưa tạo cặp khóa nào, hãy tạo một cặp bằng cách nhấp vào Cặp khóa bên dưới Nhóm bảo mật trong tab ec2.
  2. Trong bảng điều khiển AWS, hãy mở tab Đàn hồi.
  3. Chọn khu vực liên quan.
  4. Chọn môi trường liên quan
  5. Chọn Cấu hình trong khung bên trái.
  6. Chọn Bảo mật.
  7. Trong "Cặp khóa EC2:", chọn tên của cặp khóa của bạn trong Existing Key Pairtrường.

Khi cá thể đã khởi chạy lại, bạn cần lấy tên máy chủ từ tab phiên bản AWS Console EC2 hoặc thông qua API. Sau đó bạn có thể ssh lên máy chủ.

$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

Lưu ý: Để thêm một cặp khóa vào cấu hình môi trường, bảo vệ chấm dứt của các phiên bản phải được tắt vì Beanstalk sẽ cố gắng chấm dứt các phiên bản hiện tại và bắt đầu các phiên bản mới với KeyPair.

Lưu ý: Nếu một cái gì đó không hoạt động, hãy kiểm tra tab "Sự kiện" trong ứng dụng / môi trường Beanstalk và tìm hiểu những gì đã sai.


41
Câu trả lời này có số phiếu nhiều hơn gấp 2 lần so với bất kỳ câu trả lời nào khác; là kỹ thuật nghiêm ngặt; và cực kỳ rõ ràng. Điều gì là sai với nó? Tại sao nó không được chấp nhận?

6
Nếu bạn gặp lỗi "Quyền bị từ chối (khóa công khai)" mặc dù bạn đã làm theo các hướng dẫn ở trên, điều sau đây có thể giải thích tại sao: Nếu thiết lập EB của bạn khởi chạy nhiều hơn một phiên bản EC2, bạn phải kiểm tra xem chúng có cặp khóa nào được liên kết với nó Bạn chỉ có thể SSH đến ví dụ với cặp khóa. Bạn có thể kiểm tra các thuộc tính trong menu ví dụ EC2 để tìm hiểu.
Per Quested Aronsson

27
Giao diện có thể đã thay đổi ở đây. Đối với tôi, bước 4 và 5 trong phần thứ hai hơi khác nhau. Tôi đã phải chọn môi trường liên quan để mở bảng điều khiển của nó và sau đó chọn 'Cấu hình' ở bên trái. Nhấp vào biểu tượng bánh răng cài đặt bên cạnh 'Trường hợp', sẽ hiển thị trang cài đặt Máy chủ. Tôi đã có thể chọn một cặp khóa EC2 từ một thả xuống, rất thuận tiện. Cảm ơn câu trả lời tuyệt vời, mặc dù!
Dallin

12
Đối với lệnh ssh, bạn sẽ phải chỉ định tệp khóa riêng (.pem) và user_name @ public_dns_name (không phải khóa chung, như câu trả lời ngụ ý bởi phần mở rộng .pub). Đối với Amazon Linux, tên người dùng mặc định là người dùng ec2. Đối với RHEL5, tên người dùng thường là root nhưng có thể là người dùng ec2. Đối với Ubuntu, tên người dùng là ubfox. Đối với SUSE Linux, tên người dùng là root. Nếu không, hãy kiểm tra với nhà cung cấp AMI của bạn. (tín dụng: docs.aws.amazon.com/AWSEC2/latest/UserGuide/ nam )
yacc

5
Cài đặt này đã được chuyển sang tab "Bảo mật" trong "Cấu hình" (vì vậy trong bước 6, chọn "Bảo mật" thay vì "Trường hợp")
delucasvb

128

Beanstalk đàn hồi CLI v3 hiện hỗ trợ SSH trực tiếp bằng lệnh eb ssh. Ví dụ

eb ssh your-environment-name

Không cần tất cả các rắc rối khi thiết lập các nhóm bảo mật tìm ra địa chỉ cá thể EC2.

Ngoài ra còn có mẹo hay này:

eb ssh --force

Điều đó sẽ tạm thời buộc cổng 22 mở thành 0.0.0.0 và giữ cho cổng mở cho đến khi bạn exit. Điều này pha trộn một chút lợi ích của câu trả lời hàng đầu, mà không gặp rắc rối. Bạn có thể tạm thời cấp cho người khác ngoài bạn truy cập để gỡ lỗi và không có gì. Tất nhiên, bạn vẫn sẽ cần phải tải khóa công khai của mình lên máy chủ để họ có quyền truy cập. Khi bạn làm điều đó (và miễn là bạn ở trong eb ssh), người khác có thể

ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

2
Tôi chỉ tự cài đặt CLI v3 và nó hoạt động rất đẹp. Chỉ cần thêm, bạn có thể chỉ định môi trường bằng cách thêm nó vào lệnh, ví dụ : eb ssh production. Bạn cũng có thể thiết lập một môi trường cụ thể với tùy chọn thiết lập:eb ssh production --setup
jmera

Hmmm không, điều này đòi hỏi bạn phải có khóa riêng trong thư mục ~ / .ssh của bạn. Một số người có nó, một số thì không. Nếu bạn không, bạn vẫn phải tạo và tải xuống một cái, và thiết lập nó trong EB.
Jorge Orpinel

49

Trải nghiệm của tôi vào tháng 8 năm 2013 với máy khách linux và cài đặt AWS Beanstalk đơn giản (ví dụ EC2 đơn) như sau (dựa trên Community Wiki ở trên)

Cấu hình nhóm bảo mật

  1. Trong bảng điều khiển AWS, chọn EC2 để chuyển đến Bảng điều khiển EC2
  2. Khám phá nhóm bảo mật mà phiên bản EC2 của bạn thuộc về bằng cách nhấp vào Trường hợp trong bảng điều khiển bên trái và sau đó chọn phiên bản bạn muốn kết nối (trong trường hợp của tôi chỉ có một - được gọi là Môi trường mặc định). Các chi tiết được hiển thị ở dưới cùng của trang - Bạn sẽ thấy một trường cho Nhóm bảo mật - ghi chú tên - trong trường hợp của tôi là "awsweb ...".
  3. Từ bảng điều khiển bên trái chọn Nhóm bảo mật.
  4. Chọn awsweb...nhóm bảo mật và các chi tiết sẽ hiển thị ở dưới cùng của trang
  5. Chọn tab Trong và chọn SSH từ danh sách "Tạo quy tắc mới". Chèn địa chỉ IP / CIDR của máy cục bộ của bạn (từ đó bạn định kết nối), ví dụ 192.168.0.12 / 32 và nhấp vào Thêm quy tắc và áp dụng thay đổi quy tắc.

Tạo cặp khóa công khai

  1. Từ bảng điều khiển EC2, chọn Cặp khóa từ bảng điều khiển bên trái
  2. Nhấp vào Cặp khóa (ở trên cùng) và nhập tên như myname-key-cặp-myregion hoặc bất kỳ tên khóa hợp lệ nào bạn muốn.
  3. Xác nhận và sau đó chấp nhận tải xuống khóa riêng từ trình duyệt lưu ví dụ vào thư mục chính của bạn hoặc bất cứ nơi nào bạn thích. Hãy chắc chắn rằng thư mục chỉ có quyền ghi cho bạn.

Liên kết cặp khóa riêng công khai với máy chủ EC2 của Bean Beanalk

  1. Để thêm cặp khóa công khai vào ví dụ EC2 của Bean Bean, hãy thực hiện: Dịch vụ -> Bean Beanalk -> Ứng dụng của tôi -> Môi trường mặc định sẽ đưa bạn đến môi trường mặc định (nơi bạn tải lên ứng dụng của mình)
  2. Nhấp vào Cấu hình (trên bảng điều khiển bên trái) và sau đó trên thiết bị / bánh răng được liên kết với "Trường hợp"
  3. Một trang có tên "Máy chủ" được hiển thị
  4. Chọn mệnh giá khóa dựng sẵn của bạn từ Cặp khóa EC2 và thực hiện Lưu
  5. Một số thông báo cảnh báo được hiển thị để làm lại Lưu.

Kết nối với AWS EC2 Instance bằng SSH

  1. Trong phiên cuối, thay đổi thư mục chứa khóa riêng của bạn (tệp .pem).
  2. Nếu bạn đã có một vài lần, có lẽ bạn nên làm gì đó về .ssh / famous_hosts nếu bạn có một cái tên như đổi tên nó. Nếu không, bạn có thể nhận được một lỗi về danh tính của máy chủ đã thay đổi.
  3. Làm: ssh -i ./myname-key- Pair-my-region.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com

Chúc may mắn


3
Đối với lệnh ssh, bạn sẽ phải chỉ định tệp khóa riêng (.pem) và user_name @ public_dns_name. Đối với Amazon Linux, tên người dùng mặc định là người dùng ec2. Đối với RHEL5, tên người dùng thường là root nhưng có thể là người dùng ec2. Đối với Ubuntu, tên người dùng là ubfox. Đối với SUSE Linux, tên người dùng là root. Nếu không, hãy kiểm tra với nhà cung cấp AMI của bạn. (tín dụng: docs.aws.amazon.com/AWSEC2/latest/UserGuide/, )
yacc

Câu hỏi này có lời giải thích tốt nhất để thêm phần cặp khóa. Nhưng tôi thích sử dụng eb-cli để thực hiện phần SSH vì nó đơn giản hơn. Tuy nhiên, tôi cũng ủng hộ điều này.
Nick

35

Tôi đã được chơi với điều này là tốt.

  1. goto tab dịch vụ beanstalk đàn hồi của bạn
  2. trên tổng quan ứng dụng của bạn hành động goto -> chỉnh sửa cấu hình
  3. thêm tên của một khóa như nó xuất hiện trong tab EC2 của bạn (cho cùng một khu vực) vào hộp khóa hiện tại và nhấn áp dụng thay đổi

Dịch vụ sẽ được khởi chạy lại, hãy pha cà phê trong 5 phút

Trên tab ec2 của bạn cho cùng một khu vực, bạn sẽ thấy phiên bản mới đang chạy của mình. ssh với tên dns công khai là người dùng ec2 bằng cách sử dụng khóa được thêm vào trong 3 ví dụ: ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com


5
Thêm phần "người dùng ec2" là vấn đề của tôi ... Điều này cần được hợp nhất với câu trả lời ở trên;).
Kirill Fuchs

30

Có một tùy chọn 'Kết nối' tiện dụng trong menu 'Hành động sơ thẩm' cho phiên bản EC2. Nó sẽ cung cấp cho bạn lệnh SSH chính xác để thực thi với url chính xác. Hướng dẫn chung của Jabley là chính xác.


24

Câu trả lời trên là hơi cũ.

Đầu tiên, tạo một cặp khóa và sau đó gắn nó vào môi trường của Bean Beanalk.

Các bước để tạo một cặp khóa

  1. Đăng nhập vào AWS
  2. Dịch vụ -> EC2
  3. Ở bên trái dưới NETWORK & AN NINH chọn các cặp khóa
  4. Chọn Tạo cặp khóa mới, nhập tên khóa và nhấp vào tạo. Khóa sẽ được tự động tải xuống hệ thống của bạn.

Các bước để gắn cặp khóa đã tạo vào môi trường Bean Beanalk

  1. AWS -> Dịch vụ -> Bean Beanalk

  2. Chọn môi trường của bạn và nhấp vào cấu hình bên trái.

  3. Trong Tổng quan cấu hình, chọn sửa đổi từ Bảo mật.

  4. Trong quyền máy ảo, chọn cặp khóa mà chúng tôi đã tạo.

  5. Bấm vào lưu và sau đó vào lưu cấu hình.

Điều này sẽ mất một thời gian để phản ánh với thể hiện EC2 của bạn.



3

Bạn cần kết nối trực tiếp với thể hiện ec2 bằng địa chỉ IP công khai của nó. Bạn không thể kết nối bằng cách sử dụng url đàn hồi.

Bạn có thể tìm thấy địa chỉ IP cá thể bằng cách tìm kiếm nó trong bảng điều khiển ec2.

Bạn cũng cần đảm bảo cổng 22 được mở. Theo mặc định, EB CLI đóng cổng 22 sau khi kết nối ssh hoàn tất. Bạn có thể gọi eb ssh -o để giữ cổng mở sau khi phiên ssh hoàn tất.

Cảnh báo: Bạn nên biết rằng cây đậu co giãn có thể thay thế cá thể của bạn bất cứ lúc nào. Nhà nước không được đảm bảo trên bất kỳ trường hợp đậu bắp đàn hồi của bạn. Có lẽ tốt hơn là chỉ sử dụng ssh cho mục đích thử nghiệm và gỡ lỗi, vì mọi thứ bạn sửa đổi có thể biến mất bất cứ lúc nào.


2

Hướng để đặt cặp khóa cho phiên bản ElasticBeanstalk ec2 với giao diện người dùng hiện tại là: Cảnh báo: Điều này sẽ yêu cầu cập nhật các phiên bản EC2 trong Ứng dụng ElasticBeanstalk của bạn. Lưu ý: Bạn sẽ cần phải tạo một cặp khóa trong bảng điều khiển EC2 trước đó.

1) Trong Bảng điều khiển AWS, Chọn dịch vụ ElasticBeanstalk 2) Chọn Ứng dụng bạn muốn sử dụng. 3) Chọn 'Cấu hình' 4) Chọn biểu tượng bánh răng (cài đặt) trên hộp cấu hình 'Trường hợp'. 5) Điều này sẽ đưa bạn đến một trang có tiêu đề 'Máy chủ', nơi bạn có thể cập nhật trường thả xuống 'Cặp khóa EC2' với cặp khóa mong muốn của bạn và chọn 'Lưu'.

Một điều cần lưu ý là điều này có thể không hoạt động đối với các Ứng dụng có nhiều phiên bản (nhưng tôi tin rằng có khả năng nếu tất cả chúng đều nằm trong cùng một khu vực với cặp khóa).


1

Tôi đến đây để tìm cách thêm khóa vào một thể hiện mà Beanstalk tạo ra trong quá trình cung cấp (chúng tôi đang sử dụng Terraform). Bạn có thể làm như sau trong Terraform:

resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
   ... 
   setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "EC2KeyName"
      value     = "${aws_key_pair.your-ssh-key.key_name}"
   }
   ...
}

Sau đó, bạn có thể sử dụng khóa đó để SSH vào hộp.


1

Nếu bạn đã thiết lập CLI sử dụng eb initcho môi trường của mình thì nó sẽ đơn giản như

eb ssh --setup sẽ cho phép bạn tạo một cặp khóa mới hoặc sử dụng một cặp hiện có nếu tồn tại.

Bạn cũng có thể chỉ cần kết nối với môi trường hiện tại eb usemặc dù tôi chưa làm điều đó.

Để biết chi tiết về cách cài đặt CLI - https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install


1

Trên mac bạn có thể cài đặt cli bằng brew:

brew install awsebcli

Với công cụ dòng lệnh, sau đó bạn có thể ssh với:

eb ssh environment-name

và cũng làm các hoạt động khác. Điều này giả sử bạn đã thêm một nhóm bảo mật cho phép ssh từ ip của bạn.


0

Tùy thuộc vào cấu hình môi trường của bạn, bạn có thể không có địa chỉ IP công khai trên phiên bản EC2 được tạo cho môi trường của bạn. Bạn có thể kiểm tra bằng cách:

  1. Chuyển đến Bảng điều khiển EC2
  2. Tìm ví dụ của bạn và kiểm tra tab Mô tả
  3. Nếu không có IP công cộng ...
  4. Nhấp vào IP đàn hồi trên Điều hướng
  5. Nhấp vào Phân bổ địa chỉ mới
  6. Chọn Amazon cho hồ bơi
  7. Nhấp vào Phân bổ

Cuối cùng, chọn EIP mới của bạn và chọn Địa chỉ liên kết từ menu hành động. Liên kết IP đó với thể hiện EC2 của bạn. Bạn sẽ có thể kết nối bằng cách sử dụng eb sshngay bây giờ.

Bạn có thể thiết lập lại các chi tiết kết nối bằng cách chạy eb ssh --setup.


-5

Tôi cũng gặp vấn đề tương tự một lúc trước. Tôi muốn sử dụng tệp chính, nhưng Amazon nói ở đâu đó rằng bạn không thể thêm tệp chính vào máy chủ EC2 hiện có. Đối với ứng dụng Beanstalk đầu tiên, Amazon định cấu hình ứng dụng cho bạn. Bạn cần tạo một ứng dụng mới và bạn có thể định cấu hình máy chủ EC2 chạy ứng dụng Beanstalk để sử dụng tệp pem cũ (ppk nếu sử dụng Putty) hoặc bạn có thể tạo một ứng dụng mới. Bây giờ bạn sẽ có thể SSH.

nhập mô tả hình ảnh ở đây

Sau đó cấu hình, sau đó xóa ứng dụng cũ của bạn.


3
Cái này sai. Bạn CÓ THỂ thêm một keyfile vào một ứng dụng beanstalk hiện có. Nó sẽ giết / xây dựng lại chính nó. Bạn không cần phải tự xóa / tạo ứng dụng.
Nate
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.