Z tego przewodnika dowiesz się, jak nawiązać bezpieczne połączenie ze zdalnym serwerem MySQL lub MariaDB z komputera lokalnego przy użyciu tunelu SSH . Jest to przydatne, jeśli chcesz używać narzędzi administracyjnych na komputerze lokalnym do pracy na serwerze.
Tunel SSH to zaszyfrowany tunel utworzony przez połączenie protokołu SSH. Możesz użyć tunelu SSH do zdalnej komunikacji z bazą danych MySQL. Po wykonaniu tych instrukcji będziesz mógł połączyć się z localhost
na swojej stacji roboczej za pomocą ulubionego narzędzia do zarządzania MySQL. Połączenie zostanie bezpiecznie przekazane do Linode przez Internet.
Uwaga MariaDB to rozwidlenie MySQL i uważane za zamiennik drop-in. Chociaż ten przewodnik odnosi się do MySQL, dotyczy on również MariaDB.
Wymagania wstępne
- MySQL jest zainstalowany.
- MySQL jest skonfigurowany do nasłuchiwania na
localhost
(127.0.0.1). Jest to domyślnie włączone.
Jak uzyskać zdalny dostęp do MySQL, tworząc tunel SSH za pomocą PuTTY
W tej sekcji dowiesz się, jak utworzyć tunel SSH do MySQL w systemie Windows za pomocą narzędzia PuTTY.
Konfigurowanie tunelu
Najpierw musisz nawiązać podstawowe połączenie z Linode:
-
PobierzPuTTY.
-
Zapisz PuTTY na swoim pulpicie.
-
Kliknij dwukrotnie plik PuTTY, aby rozpocząć — nie trzeba instalować. Zobaczysz następujące okno:
-
Wprowadź nazwę hosta lub adres IP swojego Linode w Nazwie hosta (lub adresie IP) pole.
-
W menu po lewej stronie przejdź do Połączenie -> SSH -> Tunele .
-
W portu źródłowym pole, wpisz
3306
. -
W miejscu docelowym pole wpisz
127.0.0.1:3306
. Zobacz ostateczną konfigurację poniżej: -
Kliknij Otwórz aby rozpocząć sesję SSH.
-
Jeśli wcześniej nie logowałeś się do tego systemu za pomocą PuTTY, otrzymasz ostrzeżenie podobne do następującego. Sprawdź, czy ten serwer jest tym, z którym chcesz się połączyć, a następnie kliknij Tak :
Uwaga
To ostrzeżenie pojawia się, ponieważ PuTTY chce, abyś zweryfikował, czy serwer, do którego się logujesz, jest tym, za kogo się podaje. Jest mało prawdopodobne, ale możliwe, że ktoś może podsłuchiwać twoje połączenie i udawać twojego Linode. Aby zweryfikować serwer, porównaj odcisk palca klucza pokazany w ostrzeżeniu PuTTY – ciąg cyfr i liter zaczynający się od ssh-rsa na powyższym obrazku - za pomocą odcisku palca klucza publicznego Linode. Aby uzyskać odcisk palca Linode, zaloguj się do Linode za pomocą konsoli Lish (patrz Konsola w Linode Manager) i wykonanie następującego polecenia:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
Kluczowe odciski palców powinny się zgadzać. Po kliknięciu Tak , nie będziesz otrzymywać dalszych ostrzeżeń, chyba że z jakiegoś powodu klucz przedstawiony PuTTY ulegnie zmianie; zazwyczaj powinno się to zdarzyć tylko w przypadku ponownej instalacji systemu operacyjnego zdalnego serwera. Jeśli otrzymasz to ostrzeżenie ponownie dla tego samego Linode po tym, jak klucz został już zapisany w pamięci podręcznej, nie powinieneś ufać połączeniu i dalej badać sprawy.
-
Skieruj swojego lokalnego klienta MySQL do
localhost:3306
. Twoje połączenie ze zdalnym serwerem MySQL zostanie zaszyfrowane przez SSH, umożliwiając dostęp do baz danych bez uruchamiania MySQL na publicznym IP.
Utwórz tunel SSH w systemie Mac OS X lub Linux
Ta sekcja pokaże Ci, jak utworzyć tunel SSH do MySQL w systemie Mac OS X lub Linux.
-
Zainstaluj klienta MySQL. Instalacja serwera MySQL jest dostarczana wraz z instalacją klienta. Aby zainstalować tylko klienta:
MacOS
brew install --cask mysql-shell
Ubuntu/Debian
sudo apt install mysql-client
-
Otwórz wiersz polecenia i uruchom następujące polecenie, aby otworzyć tunel SSH.
ssh [email protected] -L 3306:127.0.0.1:3306 -N
Zastąp <[email protected]> z nazwą użytkownika SSH i nazwą hosta lub adresem IP serwera. Długi ciąg liczb w poleceniu zawiera lokalny adres IP, port lokalny, zdalny adres IP i zdalny port, oddzielone dwukropkami (: ).
-L
- wiąże port lokalny ze zdalnym wpisem hosta.-N
- oznacza przekierowanie portów.Uwaga
Jeśli używasz już lokalnego serwera MySQL na swojej stacji roboczej, użyj innego portu lokalnego (często wybierany jest 3307). Twoje nowe polecenie będzie wyglądać tak:
ssh [email protected] -L 3307:127.0.0.1:3306 -N
-
Otwórz nowe okno terminala. Skieruj swojego lokalnego klienta MySQL do
127.0.0.1:3306
z nazwą użytkownika i hasłem serwera MySQL.MacOS
mysqlsh --host=127.0.0.1 --port=3306 -u user -p
Ubuntu/Debian
mysql --host=127.0.0.1 --port=3306 -u user -p
Twoje połączenie ze zdalnym serwerem MySQL zostanie zaszyfrowane przez SSH, umożliwiając dostęp do baz danych bez uruchamiania MySQL na publicznym IP.
-
Gdy będziesz gotowy do zamknięcia połączenia, wydaj CTRL-C polecenie lub zamknij okno wiersza polecenia. To zamknie tunel SSH.
Stałe połączenia SSH
Jeśli potrzebujesz trwałego tunelu SSH, rozważ użycie autossh. autossh uruchamia i monitoruje połączenie SSH i w razie potrzeby ponownie je uruchamia.
Więcej informacji
Dodatkowe informacje na ten temat można znaleźć w poniższych zasobach. Chociaż są one dostarczane w nadziei, że będą przydatne, należy pamiętać, że nie możemy ręczyć za dokładność ani aktualność materiałów hostowanych zewnętrznie.
- Korzystanie z PuTTY
- Dokumentacja MySQL
- Dokumentacja MariaDB
- autossh