Cách SSH tới ec2 dụ trong mạng con riêng tư VPC thông qua máy chủ NAT


15

Tôi đã tạo một VPC trong aws với một mạng con công cộng và một mạng con riêng tư. Mạng con riêng tư không có quyền truy cập trực tiếp vào mạng bên ngoài. Vì vậy, có một máy chủ NAT trong mạng con công cộng chuyển tiếp tất cả lưu lượng truy cập đi từ mạng con riêng sang mạng bên ngoài.

Hiện tại, tôi có thể SSH từ mạng con công cộng sang mạng con riêng tư, cũng có thể SSH từ NAT sang mạng con riêng tư. Tuy nhiên, điều tôi muốn là SSH từ bất kỳ máy nào (máy tính xách tay gia đình, máy văn phòng và điện thoại di động) đến các phiên bản trong mạng con riêng tư.

Tôi đã thực hiện một số nghiên cứu rằng tôi có thể thiết lập hộp NAT để chuyển tiếp SSH sang ví dụ trong mạng con riêng tư. Nhưng tôi đã không may mắn cho điều này.

Bất cứ ai có thể liệt kê những gì tôi cần thiết lập để thực hiện điều này có thể.

Đặt tên là:

máy tính xách tay (bất kỳ thiết bị nào ngoài VPC)

nat (máy chủ NAT trong mạng con công cộng)

đích (máy chủ trong mạng con riêng tư mà tôi muốn kết nối)

Không chắc chắn sau đây là những hạn chế hay không:

"Đích" không có IP công cộng, chỉ có một mạng con, ví dụ 10.0.0.1 "đích" không thể kết nối với "nat" thông qua công khai của nat. Có một số máy chủ "đích", tôi có cần thiết lập một máy chủ cho mỗi máy chủ không?

Cảm ơn


Liên kết này phác thảo các bước cần thiết để kết nối với các phiên bản EC2 trong Mạng con riêng tư thông qua Chuyển tiếp tác nhân SSH.
Shailender Rawat

Câu trả lời:


24

Bạn có thể thiết lập máy chủ pháo đài để kết nối với bất kỳ trường hợp nào trong VPC của mình:

http://bloss.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Seciously-connect-to-Linux-instances-ricky-in-a-private-Amazon-VPC

Bạn có thể chọn khởi chạy một thể hiện mới sẽ hoạt động như một máy chủ pháo đài hoặc sử dụng thể hiện NAT hiện tại của bạn làm pháo đài.

Nếu bạn tạo một phiên bản mới, như một tổng quan, bạn sẽ:

1) tạo nhóm bảo mật cho máy chủ pháo đài của bạn, cho phép truy cập SSH từ máy tính xách tay của bạn (lưu ý nhóm bảo mật này cho bước 4)

2) khởi chạy một cá thể (pháo đài) riêng trong mạng con công cộng trong VPC của bạn

3) cung cấp cho pháo đài đó một IP công khai khi khởi chạy hoặc bằng cách gán IP đàn hồi

4) cập nhật các nhóm bảo mật của từng phiên bản của bạn không có IP công khai để cho phép truy cập SSH từ máy chủ pháo đài. Điều này có thể được thực hiện bằng cách sử dụng ID nhóm bảo mật của máy chủ pháo đài (sg - #####).

5) sử dụng chuyển tiếp tác nhân SSH (ssh -A user @ publicIPofBastion) để kết nối đầu tiên với pháo đài, và sau đó một lần trong pháo đài, SSH vào bất kỳ trường hợp nội bộ nào (ssh user @ private-IP-of-Internal-Instance). Chuyển tiếp tác nhân đảm nhiệm việc chuyển tiếp khóa riêng của bạn để nó không phải được lưu trữ trong trường hợp pháo đài ( không bao giờ lưu trữ khóa riêng trên bất kỳ trường hợp nào !! )

Bài đăng blog AWS ở trên sẽ có thể cung cấp một số gritty nitty liên quan đến quá trình. Tôi cũng đã bao gồm những điều dưới đây trong trường hợp bạn muốn biết thêm chi tiết về máy chủ pháo đài:

Khái niệm về máy chủ Bastion: http://en.m.wikipedia.org/wiki/Bastion_host

Nếu bạn cần làm rõ, hãy bình luận.


3
Hãy chắc chắn cho phép SSH / 22 trên cả trong và ngoài nước trên pháo đài.
dùng464180

Đây là một điểm quan trọng đến mức nó phải là một phần của câu trả lời!
Tariq

Ngoài câu trả lời được chấp nhận giúp ích rất nhiều nhưng không hoàn toàn, tôi phải đảm bảo rằng các nhóm bảo mật cho phép lưu lượng truy cập trong và ngoài nước. Thoạt nhìn có vẻ như họ đã làm, nhưng vì tôi đã sử dụng mẫu CloudFormation, tôi đã không nhận thấy rằng nguồn cho lưu lượng truy cập đến mạng con riêng là ELB của tôi. Vì vậy, nó cho phép tất cả lưu lượng truy cập nhưng chỉ đến từ ELB. Thay đổi điều đó sang mạng con công cộng của tôi đã khắc phục vấn đề.
Milan Markovic

1

Cách duy nhất tôi có thể làm cho nó hoạt động.

1) Đảm bảo rằng nhóm bảo mật cho trường hợp riêng này có trong quy tắc gửi đến nhóm bảo mật từ mạng con công cộng

Cổng giao thức nguồn
Tất cả sg-0b6616e070b9ea2d (nhóm bảo mật công cộng)

2) Sử dụng các lệnh proxy, định cấu hình tệp cấu hình ssh của bạn để có thứ gì đó như thế này

vim ~/.ssh/config

Host publichost
   HostName 24.123.34.45
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand none
Host privatehost
   HostName 10.0.2.133
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand ssh publichost -W %h:%p

Chạy ssh privatehost nó sẽ hoạt động


0

Chỉ cần làm rõ: một khi bạn đã vào máy chủ pháo đài của mình, bạn cần phải ssh vào máy chủ NAT với tư cách là người dùng ec2-user. Điều này đã làm tôi khó chịu một chút, vì thông thường người dùng ubfox là ubfox trên AWS. Tôi cũng vậy:

laptop> ssh -A ubuntu@ssh_bastion
ssh_bastion> ssh ec2-user@nat_private_dns_or_private_ip

Ngoài ra, hãy nhớ rằng ssh_bastion của bạn nên có quy tắc đi ra cho phép lưu lượng truy cập đến các máy chủ và sg khác.


Có phải tên 'ec2_user' là kết quả của việc quay vòng một Amazon AMI cụ thể, đã được định cấu hình cho dịch vụ NAT không? Vậy, làm thế nào mà 'người dùng ec2' có được một tài khoản trên máy riêng?
Dennis
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.