Bagaimana saya bisa menggunakan tunneling port untuk terhubung ke instance database pribadi melalui benteng jaringan?


12

Saya memiliki benteng jaringan yang dapat diakses publik di example.compute-1.amazonaws.comdan contoh database postgres pribadi dipostgres.example.us-east-1.rds.amazonaws.com:5432

Saya bisa ssh ke dalam benteng menggunakan

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

Lalu begitu saya berada di benteng saya membuat terowongan ssh dengan:

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

Saya kemudian dapat memverifikasi bahwa terowongan berfungsi dengan menghubungkan ke database dari benteng menggunakan localhost:

$ psql -p 5432 -h localhost -U postgres

Namun, saya tidak dapat terhubung ke database dari jarak jauh (tanpa berada di benteng).

$ 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?

Saya telah mengkonfigurasi grup keamanan bastion untuk menerima lalu lintas masuk pada port 5432.

Apakah saya menggunakan ssh -Ldengan benar? Haruskah saya menggunakannya di luar benteng? Saran apa pun akan sangat dihargai.

Jawaban:


20

Saat Anda membuat terowongan SSH, itu tidak membuka port yang terbuka ke dunia luar. Port yang dibuka, hanya tersedia sebagai localhost. Jadi secara efektif apa yang telah Anda lakukan adalah membuat terowongan dari benteng Anda, ke benteng Anda.

Sebaliknya, apa yang ingin Anda lakukan adalah membuat terowongan dari komputer lokal Anda melalui benteng Anda.

Jadi, Anda membuat terowongan Anda sebagai bagian dari koneksi Anda dari komputer lokal ke benteng Anda . Anda tidak perlu membuat koneksi SSH lain.

Jadi, secara lokal, Anda akan menjalankan:

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

Dengan asumsi postgres.example.us-east-1.rds.amazonaws.com memutuskan untuk alamat IP pribadi.

Kemudian untuk terhubung ke server Anda, masih secara lokal, hubungkan seolah-olah server itu lokal:

$ psql -p 5432 -h localhost -U postgres

Melakukan ini, tidak perlu menggunakan prompt di benteng Anda.


Ini berhasil untuk saya, terima kasih! Satu hal yang saya lupa untuk siapa saja yang perintah psql hanya hang di sana: Pastikan bahwa grup keamanan db Anda memungkinkan akses dari benteng.
Goran

-1

Ini berhasil untuk saya. Pastikan Anda memiliki klien psql diinstal secara lokal.

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

Saat membuat instance db Anda pada aws, pastikan untuk mendefinisikan yang berikut:

  1. nama pengguna
  2. kata sandi
  3. nama basis data
  4. nomor port

Saya juga harus membuat grup keamanan untuk VPC dimana database berada. Setelah membuatnya pastikan instance db Anda menggunakan ini untuk grup keamanannya. Grup keamanan memiliki aturan berikut:

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

Itu tidak melalui benteng, kan? Anda hanya terhubung langsung ke RDS
RhysC

Ia melewati vpc yang instance rds diekspos melalui. Anda melampirkan vpc ke instance rds pada saat pembuatan.
timxor

Ya saya pikir pertanyaan aslinya adalah berkenaan dengan pergi melalui server benteng di VPC sehingga contoh RDS tidak terbuka untuk umum (baik itulah cara saya membacanya)
RhysC

Itu bukan pertanyaan dan jawaban Anda tidak membantu menyelesaikan masalah sama sekali.
Radko Dinev
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.