Zakładając, że uruchomiłeś to polecenie: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -Nzgodnie z opisem w poście, do którego utworzyłeś łącze.
Podział polecenia:
ssh: to dość oczywiste. Wywołuje ssh.
-f: (Ze man sshstrony)
Żą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 sshw tło po wprowadzeniu jakichkolwiek haseł w celu nawiązania połączenia; zwraca do powłoki znak zachęty localhostzamiast 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 sshstrony):
[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:3306wiąż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.coma następnie łączy się mysql-server.comna 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 sshproces, który otworzyłeś, przechodzi w tło. Sposób ładniejszy zamknięcia jest, aby uruchomić ps aux | grep 3306, wybrać pidz ssh -f ... -L 3306:mysql-server.com:3306 -Ni kill <pid>. (A może kill -9 <pid>; zapominam, czy po prostu killdziała). Ma to piękną zaletę, że nie zabija wszystkich twoich innych sshpołą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 -Nużywałeś, wskazałbyś swoją funkcję connect-to-mysql Zend localhostna port 33060, który połączyłby się mysql-server.comz portem 3306. Oczywiście możesz nadal łączyć się localhostprzez port 3306, więc nadal możesz korzystać z lokalnego mysqlserwera.