Próbuję połączyć się z moją bazą danych poprzez tunelowanie SSH z jednego z naszych serwerów aplikacji WWW za pomocą MySQL Workbench. Oto podstawowa konfiguracja; zwróć uwagę, że ze względów bezpieczeństwa zmieniłem niektóre wartości na zrzucie ekranu.
Problem polega na tym, że za każdym razem, gdy próbuję połączyć się przez tunel SSH z jednego z naszych serwerów aplikacji, pojawia się następujący błąd:
Nie udało się połączyć z us-east-1.amazonaws.com przez tunel SSH na computer.amazonaws.com z użytkownikiem social_shop_prod. Nie można połączyć się z serwerem MySQL w wersji 127.0.0.1.
Jeśli jednak użyję tych samych danych logowania przez SSH za pomocą następującego wiersza polecenia:
mysql -u social_shop_prod -h us-east-1.amazonaws.com -p
Mogę pomyślnie nawiązać połączenie i uzyskać interaktywny wiersz polecenia MySQL.
Rozmawiałem tutaj z resztą mojego zespołu programistów i nikt z nas nie może zrozumieć, dlaczego nie mogę tunelować SSH z naszych serwerów aplikacji za pomocą Workbench; ale kiedy łączę SSH z jednym z naszych serwerów aplikacji i łączę się z MySQL za pomocą wiersza poleceń; Mogę się połączyć pomyślnie.
I dlaczego próbuje połączyć się przez 127.0.0.1? Nie określiłem tego w konfiguracji; plik mojego hosta nie przekierowuje domen pokazanych poniżej do tego adresu IP.
Wszelkie konstruktywne uwagi są mile widziane.
źródło
Nadal zajmowałem się tym problemem przez prawie 2 tygodnie, teraz udało mi się go ustawić. Zamieszczę go tutaj, aby więcej osób mogło go wypróbować.
Ok, używam OpenSSH (natywny Win10) i Workbench 8.
Krok po kroku:
1. Dodaj klucze hosta SSH do agenta za pomocą ssh-add.
2. Wygeneruj pary kluczy za pomocą ssh-keygen. W moim przypadku pliki te są automatycznie
Users/myUser/.ssh
przenoszone zgodnie z konfiguracjami instalacji.3. Dodaj klucz publiczny do pliku autoryzowanego_klucza (który w moim przypadku musi znajdować się w ścieżce instalacyjnej serwera
Windows/System32/OpenSSH/.ssh
) bez rozszerzeń.4. Dodaj wygenerowane klucze, które właśnie utworzyłeś do agenta za pomocą ssh-add.
Powyższe kroki to w zasadzie konfiguracja wiersza poleceń SSH Server, który, jak sądzę, OP już zrobił dla jego połączenia działa przez terminal. Aby skonfigurować MySQL Workbench 8, wykonaj dokładnie to samo, tyle że musisz przekonwertować plik private_key.pem do formatu OpenSSH przed przeniesieniem ich do
Users/myUser/.ssh
iOpenSSH_instalation_path/.ssh
User/myUser/.ssh
iOpenSSH_instalation_path/.ssh
OpenSSH_instalation_path/.ssh
folderze.User/myUser/.ssh
.AKTUALIZACJA: Musisz ustawić następujące ustawienia w swoim pliku sshd_config:
PermitRootLogin bez-password
PubkeyAuthentication tak
PasswordAuthentication nie
PermitEmptyPasswords nie
AllowTcpForwarding tak
PROSZĘ PRZECZYTAJ:
Jestem niedoświadczonym analitykiem, więc jeśli bardziej zaawansowany użytkownik wie, który z dwóch folderów .ssh jest właściwy, powiedz nam. Uważam, że OpenSSH jest niejasny w tej kwestii.
Działa to dla mnie podczas ustawiania lokalnego środowiska programistycznego przy użyciu tylko localhost. Tylko do celów edukacyjnych.
Możesz dodać myUser @ localhost do użytkowników MySQL Workbench przed przetestowaniem połączenia.
Jeśli jest to naprawdę potrzebne, mogę dodawać obrazy.
źródło
W moim przypadku problem musiałem zmienić z powrotem na prawidłową nazwę domeny lub adres IP zamiast niestandardowego hosta host lokalny rozwiązany.
Niepowodzenie rozdzielczości hosta niestandardowego (
/etc/hosts
)Pracuję z mechanizmem rozpoznawania lokalnych hostów, który zdefiniował:
Z jakiegoś powodu
MySQL 5.2.47
naLinux Mint 14 (Nadia)
którym jest podobna doUbuntu 12.10 (Quantal)
tej mechanizmu rozstrzygania nie działa .Rozwiązanie
Wystarczy zmienić nazwę domeny publicznej, na przykład
my-website.com
rozwiązać problem.źródło
Zobacz tutaj listę zasobów do łączenia się z różnymi celami (Amazon RDS, Amazon EC2, Windows Azure i inne): http://forums.mysql.com/read.php?152,252640,252640#msg-252640 .
źródło
Miałem podobny problem, który może być niewidoczny, ale sprawdź reguły zapory w AWS. Mam ustawiony zakres adresów IP, aby ograniczyć połączenia ze świata zewnętrznego. I zmieniło się IP w moim biurze, więc znalazło się poza zakresem IP. Mój kolega z innego biura nadal może się połączyć, więc pomyślałem, że problem dotyczy mojego komputera, ale problem dotyczył reguł zapory w AWS. Mam nadzieję, że ktoś komuś pomoże :)
źródło