Workbench ile SSH üzerinden MySQL veritabanına bağlanılamıyor


10

MySQL Workbench ile web uygulama sunucularımızdan birinden SSH tünelleme yoluyla veritabanıma bağlanmaya çalışıyorum. İşte temel yapılandırma; güvenlik nedeniyle ekran görüntüsünde bazı değerleri değiştirdiğimi unutmayın.

Workbench ekran görüntüsü

Sorun, uygulama sunucularımızdan birinden bir SSH tüneli üzerinden bağlanmaya çalıştığımda şu hatayı alıyorum:

Us-east-1.amazonaws.com sitesine computer.amazonaws.com adresindeki SSH tüneli üzerinden social_shop_prod kullanıcısı ile bağlanılamadı. 127.0.0.1'de MySQL sunucusuna bağlanılamıyor.

Ancak, aşağıdaki komut satırı üzerinden SSH üzerinden aynı kimlik bilgilerini kullanırsam:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p

Başarılı bir şekilde bağlanabilir ve MySQL etkileşimli komut istemini alabilirim.

Geliştirme ekibimin geri kalanıyla burada konuşuyorduk ve hiçbirimiz Workbench ile uygulama sunucularımızdan SSH'yi neden tünelleyemediğimizi anlamıyoruz; ancak uygulama sunucularımızdan birine SSH ve komut satırı üzerinden MySQL'e bağlandığımda; Başarılı bir şekilde bağlanabiliyorum.

Ve neden 127.0.0.1'in üzerinden bağlanmaya çalışıyor? Bunu yapılandırmada belirtmedim; ne de ana bilgisayarlarım dosyası, aşağıda gösterilen alanları bu IP'ye yönlendirmiyor.

Herhangi bir yapıcı girdi büyük beğeni topluyor.

Yanıtlar:


5

Bir SSH tüneli üzerinden bağlandığınız için, bu, us-east-1.amazonaws.com adresinden MySQL bağlantı noktası 3306'nın bilgisayarınızda yerel olarak açıldığı anlamına gelir. Bilgisayarınızın ip adresi 127.0.0.1 veya localhost'tur. Us-east-1.amazonaws.com adresinden mysql sunucusuna bağlandığınızda, aslında 127.0.0.1, yani bilgisayarınız üzerinden erişirsiniz. Başka bir tünel açıksa veya bilgisayarınızda yerel olarak çalışan MySQL varsa, kimlik doğrulama girişimlerinizi reddeden diğer MySQL sunucusu olabilir

Deneyebileceğiniz bazı testler var:

1. Windows bilgisayarını hangi portlarda dinliyorsunuz?

Komut isteminden: netstat -a (açık olan tüm bağlantı noktalarını listeler)

Linux'ta şöyle olurdu: netstat -tlpn

2. Temel bağlantı testi

Bir DOS komut isteminden veya linux konsolundan: telnet 127.0.0.1 3306

Bir mola alırsanız veya başka bir program yanıt verirse, tüneliniz doğru şekilde kurulmamıştır.

3. MySQL Workbench'in yerel olarak açtığı port numarasını değiştirin

MySQL çalışma tezgahının bilgisayarınızda tünel oluşturduğunu varsayıyoruz. Öyleyse, MySQL çalışma tezgahında, 9000 gibi başka bir bağlantı noktası numarası üzerinden tünel oluşturmayı deneyin.

9000'in şu adresten açık bir bağlantı noktası olarak listelenmediğinden emin olun: netstat -a

Us-east-1.amazonaws.com sitesine ssh erişiminiz varsa

4. us-east-1.amazonaws.com adresinden MySQL'e bağlanmayı deneyin

mysql -u myuser -h 127.0.0.1 -p

Rolando'un dediği gibi, doğru kimlik bilgileriyle bağlandığınızı doğrulamak istersiniz. Örneğin, myuser@127.0.0.1 olarak bağlanıyorsanız ve ana bilgisayarı olmayan bir kullanıcı myuser'ınız varsa, muhtemelen user@127.0.0.1 kullanarak bağlanamazsınız.


2

127.0.0.1 ile iletişim kurulmasının nedeni, tünelin yerel makinenizdeki bir bağlantı noktasını uzak ana bilgisayara bağlamasıdır. Mesaj, bir SSH bağlantısının yapılmadığını gösteriyor gibi görünüyor.

Bunu komut satırından deneyin:

ssh -L 33000:remotehost:3306 user@remotehost

SSH'nin iletilen bağlantı noktalarına izin verdiğinden emin olun; iletmeye izin verilmediğini veya reddedildiğini bildiren bir ileti alırsanız, bu yüzden.

Bunu düzeltmek için sunucu yapılandırmasını değiştirmeniz gerekir; bu yapılandırmayı SSH sunucusuna ekleyin:

AllowTcpForwarding yes

Bu yapılandırmayı etkinleştirmek için sunucuyu yeniden başlatmayı unutmayın.


bu komutu biraz açıklayabilir misin? adresi mi bağlıyorsun? Bu mysql komutları ile birleştirilebilir mi?
Thufir

SSH ile burada bir tünel kuruyorsunuz, başka bir şey değil. Uzak bir bağlantı noktasını yerel bir bağlantı noktasına bağlar. Bu durumda, yerel bir bağlantı noktasını uzak MySQL bağlantı noktasına bağlamaktır.
Mei

1

Yaklaşık 2 hafta boyunca bu sorunla uğraşmaya devam ettim, şimdi ayarlamayı başardım. Daha fazla insanın deneyebilmesi için buraya göndereceğim.

Tamam, OpenSSH (Win10 native) ve Workbench 8 kullanıyorum.

Adım adım:
1. ssh-add komutunu kullanarak SSH ana bilgisayar anahtarlarınızı aracıya ekleyin.
2. ssh-keygen kullanarak anahtar çiftlerini oluşturun. Benim durumumda, bu dosyalar otomatik Users/myUser/.ssholarak kurulum yapılandırmalarına göre gider .
Açık anahtarı ekleyin 3. authorized_keys (benim durumumda sunucu yükleme yolu içinde olmalıdır, dosyada Windows/System32/OpenSSH/.sshhiçbir uzantılı).
4. Yeni oluşturduğunuz anahtarları ssh-add kullanarak aracıya ekleyin.

Yukarıdaki adımlar, OP'nin bağlantı için zaten yapmış olduğu bir komut satırı SSH Server'ın yapılandırmasıdır. Dönüştürmek gerekir dışında yapılandırmak MySQL tezgah 8 için, hemen hemen aynı şeyi yapmak private_key.pem bir OpenSSH biçimine onları geçmeden önce Users/myUser/.sshveOpenSSH_instalation_path/.ssh

  1. PUTTYgen kullanarak private_key.pem dosyasını OpenSSH formatına dönüştürün .
  2. "OpenSSH yetkili_anahtarlarına yapıştırmak için Ortak Anahtar" alanını kopyalayın .
  3. Ortak anahtarı klasörlere kaydedin User/myUser/.sshveOpenSSH_instalation_path/.ssh
  4. Size MACUN kopyaladığınız anahtarı yapıştırın authorized_keys dosyada OpenSSH_instalation_path/.sshklasöründe.
  5. OpenSSH biçim anahtarını User/myUser/.ssh.
  6. Sshd ve mysql hizmetlerini yeniden başlatın
  7. Workbench'i, dönüştürülmüş özel anahtarı kullanarak SSH sunucusuna bağlanacak şekilde yapılandırın.

GÜNCELLEME: sshd_config dosyanızda aşağıdakileri ayarlamanız gerekir:

Parola olmadan
PermitRootLogin PubkeyAuthentication evet
PasswordAuthentication no
PermitEmptyPasswords no
AllowTcpForwarding evet

LÜTFEN OKU:

Deneyimsiz bir analistim, bu yüzden daha gelişmiş bir kullanıcı iki .ssh klasöründen hangisinin doğru olduğunu bilirse, lütfen bize bildirin. OpenSSH'yi bu konuda belirsiz buluyorum.
Bu, yalnızca localhost kullanarak bir yerel geliştirme ortamı oluştururken benim için çalıştı. Sadece öğrenme amaçlı.
Bağlantıyı test etmeden önce myUser @ localhost'u MySQL Workbench kullanıcılarına eklemek isteyebilirsiniz.
Gerçekten gerekliyse resim ekleyebilirim.


0

Benim durumumda, çözümlenen özel bir ana bilgisayar yerine geçerli bir alan adına veya IP'ye geri dönmek zorunda kaldım .

Özel ana bilgisayar çözünürlüğü başarısız ( /etc/hosts)

Ben tanımlanmış bir yerel ana çözünürlük mekanizması ile çalışır:

#.#.#.#    my-vm

İle Nedense MySQL 5.2.47üzerinde Linux Mint 14 (Nadia)hangi benzer iş çözme mekanizması yoktur .Ubuntu 12.10 (Quantal)

Çözüm

Sorunu çözmek gibi herkese açık bir alan adına geçmeniz yeterlidir my-website.com.


@Mat sabit, thanj = ks
Édouard Lopez


0

Benzer bir sorunum vardı ve bu çok tehlikeli olabilir, ancak AWS'de güvenlik duvarı kurallarını kontrol edin. Dış dünyadan bağlantıları kısıtlamak için bir IP aralığı ayarladım. Ve ofisimdeki IP değişti, bu yüzden IP aralığının dışına çıktı. Başka bir işteki meslektaşım hala bağlanabiliyordu, bu yüzden sorunun PC'mde olduğunu düşündüm, ancak sorun AWS'deki güvenlik duvarı kurallarındaydı. Umarım birine yardım eder :)

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.