Bir ağ kalesi aracılığıyla özel bir veritabanı örneğine bağlanmak için bağlantı noktası tünellemesini nasıl kullanabilirim?


12

Ben genel olarak erişilebilir bir ağ Kalesi example.compute-1.amazonaws.comve özel postgres veritabanı örneği varpostgres.example.us-east-1.rds.amazonaws.com:5432

Kullanarak kaleme ssh

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

Sonra bir kez burda olduğumda bir ssh tüneli oluşturuyorum:

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

Daha sonra localhost kullanarak burçtan veritabanına bağlanarak tünelin çalıştığını doğrulayabilirim:

$ psql -p 5432 -h localhost -U postgres

Ancak, veritabanına uzaktan bağlanamıyorum (tabanda kalmadan).

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

Bodrumun güvenlik grubunu 5432 numaralı bağlantı noktasında gelen trafiği kabul edecek şekilde yapılandırdım.

ssh -LDoğru mu kullanıyorum ? Tabya dışında mı kullanmalıyım? Herhangi bir tavsiye çok takdir edilecektir.

Yanıtlar:


20

Bir SSH tüneli oluşturduğunuzda, açılan bağlantı noktasını dış dünyaya maruz bırakmaz. Açılan bağlantı noktası, yalnızca olarak kullanılabilir localhost. Yaptığınız en etkili şey, tablonuzdan tablonuza kadar bir tünel oluşturmaktır.

Bunun yerine, yerel bilgisayarınızdan tablonuz üzerinden bir tünel oluşturmaktır.

Böylece, tünelinizi yerel bilgisayarınızdan tablonuza bağlantınızın bir parçası olarak oluşturursunuz . Başka bir SSH bağlantısı oluşturmanıza gerek yoktur.

Yani, yerel olarak, yürütürdünüz:

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

Postgres.example.us-east-1.rds.amazonaws.com adresini varsayarsak özel IP adresine gider.

Ardından sunucunuza bağlanmak için, yine de yerel olarak, sunucu yerelmiş gibi bağlanın:

$ psql -p 5432 -h localhost -U postgres

Bunu yaptığınızda, kalenizde bir istem kullanmaya gerek yoktur.


Bu benim için çalıştı, teşekkürler! Ben psql komutu olan herkes için unuttum tek şey sadece orada asılı: db güvenlik grubunuzun kalesi erişim sağlar emin olun.
Goran

-1

Bu benim için çalıştı. Yerel olarak psql istemcinizin kurulu olduğundan emin olun .

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

Db örneğinizi aws üzerinde oluştururken, aşağıdakileri tanımladığınızdan emin olun:

  1. Kullanıcı adı
  2. parola
  3. veri tabanı ismi
  4. Port numarası

Ayrıca veritabanının bulunduğu VPC için bir güvenlik grubu oluşturmak zorunda kaldı. Oluşturduktan sonra db örneğinizin güvenlik grubu için bunu kullandığından emin olun. Güvenlik grubu aşağıdaki kurallara sahiptir:

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

Yine de bu bir burçtan geçmiyor değil mi? Sadece RDS ile bağlantı
kuruyorsunuz

Rds örneğinin maruz kaldığı bir vpc'den geçer. VPC oluşturma sırasında rds örneğine ekleyin.
timxor

Evet, orijinal sorunun
VPC'de

Bu soru değildi ve cevabınız sorunun çözülmesine hiç yardımcı olmuyor.
Radko Dinev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.