Làm cách nào tôi có thể sử dụng đường hầm cổng để kết nối với một cá thể cơ sở dữ liệu riêng thông qua một pháo đài mạng?


12

Tôi có một pháo đài mạng có thể truy cập công khai tại example.compute-1.amazonaws.comvà một trường hợp cơ sở dữ liệu postgres riêng tư tạipostgres.example.us-east-1.rds.amazonaws.com:5432

Tôi có thể ssh vào pháo đài bằng cách sử dụng

$ ssh -i key.pem ec2-user@example.compute-1.amazonaws.com

Sau đó, một khi tôi ở trong pháo đài, tôi tạo một đường hầm ssh với:

$ ssh -i key.pem -L 5432:postgres.example.us-east-1.rds.amazonaws.com:5432 ec2-user@example.compute-1.amazonaws.com

Sau đó tôi có thể xác minh rằng đường hầm hoạt động bằng cách kết nối với cơ sở dữ liệu từ pháo đài bằng localhost:

$ psql -p 5432 -h localhost -U postgres

Tuy nhiên, tôi không thể kết nối với cơ sở dữ liệu từ xa (mà không ở trong pháo đài).

$ psql -p 5432 -h example.compute-1.amazonaws.com -U postgres
psql: could not connect to server: Connection refused
Is the server running on host "example.compute-1.amazonaws.com" () and accepting
TCP/IP connections on port 5432?

Tôi đã cấu hình nhóm bảo mật của pháo đài để chấp nhận lưu lượng truy cập vào cổng 5432.

Tôi có đang sử dụng ssh -Lđúng không? Tôi có nên sử dụng nó bên ngoài pháo đài? Bât cư lơi khuyên nao cung se được đanh gia cao.

Câu trả lời:


20

Khi bạn tạo một đường hầm SSH, nó không để lộ cổng đã mở ra thế giới bên ngoài. Các cổng mở, chỉ có sẵn như localhost. Vì vậy, hiệu quả những gì bạn đã làm là tạo một đường hầm từ pháo đài của bạn, đến pháo đài của bạn.

Thay vào đó, những gì bạn muốn làm là tạo một đường hầm từ máy tính cục bộ của bạn thông qua pháo đài của bạn.

Vì vậy, bạn tạo đường hầm của mình như một phần của kết nối từ máy tính cục bộ đến pháo đài của bạn . Bạn không cần tạo kết nối SSH khác.

Vì vậy, tại địa phương, bạn sẽ thực hiện:

$ ssh -i key.pem -L 5432:postgres.example.us-east-1.rds.amazonaws.com:5432 ec2-user@example.compute-1.amazonaws.com

Giả sử postgres.example.us-east-1.rds.amazonaws.com phân giải thành địa chỉ IP riêng.

Sau đó, để kết nối với máy chủ của bạn, vẫn cục bộ, kết nối như thể máy chủ là cục bộ:

$ psql -p 5432 -h localhost -U postgres

Làm điều này, không cần phải sử dụng một dấu nhắc trên pháo đài của bạn.


Điều này làm việc cho tôi, cảm ơn! Một điều tôi đã quên đối với bất kỳ ai mà lệnh psql chỉ bị treo ở đó: Hãy chắc chắn rằng nhóm bảo mật db của bạn cho phép truy cập từ pháo đài.
Goran

-1

Điều này làm việc cho tôi. Hãy chắc chắn rằng bạn đã cài đặt máy khách psql cục bộ.

psql --host=myAwsDbEndpointUrl.ciqykqusf0nv.us-west-1.rds.amazonaws.com --port=5432 --username=myUserName --password --dbname=myDbName

Khi tạo cá thể db của bạn trên aws, hãy đảm bảo xác định các mục sau:

  1. tên tài khoản
  2. mật khẩu
  3. tên cơ sở dữ liệu
  4. số cổng

Tôi cũng đã phải tạo một nhóm bảo mật cho VPC mà cơ sở dữ liệu được đặt. Sau khi tạo, hãy đảm bảo cá thể db của bạn sử dụng nhóm này cho nhóm bảo mật của nó. Nhóm bảo mật có các quy tắc sau:

inbound--> type:PostgreSQL, protocol:TCP port range:5432, source:0.0.0.0/0

outbound--> type:All Traffic, protocol:All, port range:all, destination:0.0.0.0/0

Điều đó không phải là thông qua một pháo đài, phải không? Bạn chỉ cần kết nối trực tiếp với RDS
RhysC

Nó đi qua một vpc mà phiên bản rds được hiển thị thông qua. Bạn đính kèm vpc vào ví dụ rds khi tạo.
timxor

Vâng tôi nghĩ rằng câu hỏi ban đầu liên quan đến việc đi qua một máy chủ pháo đài trong VPC nên trường hợp RDS không được công khai (đó là cách tôi đọc nó)
RhysC

Đó không phải là câu hỏi và câu trả lời của bạn không giúp giải quyết vấn đề gì cả.
Radko Dinev
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.