Zakładając, że uruchomiłeś to polecenie: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -N
zgodnie z opisem w poście, do którego utworzyłeś łącze.
Podział polecenia:
ssh
: to dość oczywiste. Wywołuje ssh
.
-f
: (Ze man ssh
strony)
Żąda ssh, aby przejść do tła tuż przed wykonaniem polecenia. Jest to przydatne, jeśli ssh będzie prosić o hasła lub hasła, ale użytkownik chce, aby było to w tle.
Zasadniczo wysyłaj ssh
w tło po wprowadzeniu jakichkolwiek haseł w celu nawiązania połączenia; zwraca do powłoki znak zachęty localhost
zamiast logowania się remote-host
.
user@mysql-server.com
: zdalny serwer, do którego chcesz się zalogować.
-L 3306:mysql-server.com:3306
: To jest interesująca część. -L
(ze man ssh
strony):
[adres_wiązania:] port: host: port_hosta Określa, że podany port na hoście lokalnym (klienta) ma być przekierowany do podanego hosta i port po stronie zdalnej.
Więc -L 3306:mysql-server.com:3306
wiąże port lokalny3306
ze zdalnym portem 3306
na hoście mysql-server.com
.
Po podłączeniu do portu lokalnego3306
połączenie jest przekazywane przez bezpieczny kanał do mysql-server.com
. Zdalnego hosta , mysql-server.com
a następnie łączy się mysql-server.com
na porcie 3306
.
-N
: nie wykonuj polecenia. Jest to przydatne do „zwykłego przekazywania portów” (cytując stronę podręcznika).
Czy to polecenie ma wpływ na cokolwiek na serwerze?
Tak, ustanawia połączenie między hostem lokalnym a mysql-server.com na porcie 3306 .
A jak mam zamknąć ten tunel ...
Jeśli użyłeś -f
, zauważysz, że ssh
proces, który otworzyłeś, przechodzi w tło. Sposób ładniejszy zamknięcia jest, aby uruchomić ps aux | grep 3306
, wybrać pid
z ssh -f ... -L 3306:mysql-server.com:3306 -N
i kill <pid>
. (A może kill -9 <pid>
; zapominam, czy po prostu kill
działa). Ma to piękną zaletę, że nie zabija wszystkich twoich innych ssh
połączeń; jeśli masz więcej niż jeden, przywrócenie ich może być lekkim ... bólem.
... ponieważ teraz nie mogę poprawnie używać mojego lokalnego mysql.
Dzieje się tak, ponieważ skutecznie „przechwyciłeś” proces lokalny mysql
i przekierowałeś cały ruch, który próbuje się z nim połączyć, do procesu zdalnego mysql
. O wiele lepszym rozwiązaniem byłoby nieużywanie portu lokalnego 3306 w przekazywaniu portu. Użyj czegoś, co nie jest używane, na przykład 33060. (Wyższe liczby są zwykle rzadziej używane; często przenosi się do przodu kombinację, taką jak ta: „2525-> 25”, „8080-> 80”, „33060-> 3306” lub podobnie. Ułatwia nieco zapamiętywanie).
Tak więc, jeśli ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -N
używałeś, wskazałbyś swoją funkcję connect-to-mysql Zend localhost
na port 33060
, który połączyłby się mysql-server.com
z portem 3306
. Oczywiście możesz nadal łączyć się localhost
przez port 3306
, więc nadal możesz korzystać z lokalnego mysql
serwera.