Якщо припустити, що ви виконали цю команду: ssh -f user@mysql-server.com -L 3306:mysql-server.com:3306 -Nяк описано в повідомленні, яке ви зв’язали.
Розбивка команди:
ssh: це досить зрозуміло. Закликає ssh.
-f: (Зі man sshсторінки)
Просить ssh перейти у фоновий режим безпосередньо перед виконанням команди. Це корисно, якщо ssh збирається запитувати паролі або парольні фрази, але користувач хоче, щоб це було у фоновому режимі.
По суті, надішліть sshу фоновий режим після введення паролів для встановлення зв’язку; він повертає вам підказку оболонки, localhostа не входить у систему remote-host.
user@mysql-server.com: віддалений сервер, на який ви хочете ввійти.
-L 3306:mysql-server.com:3306: Це цікавий біт. -L(зі man sshсторінки):
[bind_address:] port: host: hostport Вказує, що даний порт на локальному (клієнтському) хості повинен бути переадресований на даний хост і порт на віддаленій стороні.
Так -L 3306:mysql-server.com:3306прив’язує локальний порт 3306до віддаленого порту 3306 на хості mysql-server.com.
Коли ви підключаєтесь до локального порту 3306, з'єднання переадресовується через захищений канал на mysql-server.com. Віддалений хост , а mysql-server.comпотім підключається до mysql-server.comпорту 3306.
-N: не виконувати команду. Це корисно для "просто переадресації портів" (цитування сторінки користувача).
Чи впливає ця команда на що-небудь на сервері?
Так, він встановлює зв’язок між localhost та mysql-server.com на порту 3306 .
І як мені закрити цей тунель ...
Якщо ви використовували -f, ви помітите, що sshпроцес, який ви відкрили, переходить у фоновий режим. Найкращий спосіб закрити його - це запустити ps aux | grep 3306, знайти файл pidз ssh -f ... -L 3306:mysql-server.com:3306 -Nі kill <pid>. (А може kill -9 <pid>; я забуваю, якщо це просто killпрацює). Це має прекрасну перевагу - не вбивати всіх інших ваших sshзв’язків; якщо у вас більше одного, їх відновлення може бути легким ... болем.
... тому що зараз я не можу правильно використовувати свій локальний mysql.
Це тому, що ви фактично "захопили" локальний mysql процес і перенаправили трафік, який намагається підключитися до нього, на віддалений mysql процес. Набагато краще , рішення було б не використовувати локальний порт 3306 в порт вперед. Використовуйте те, що не використовується, наприклад 33060. (Більші числа, як правило, використовуються рідше; досить часто переносять вперед такі комбінації: "2525-> 25", "8080-> 80", "33060-> 3306" або Полегшує запам'ятовування).
Отже, якби ви використовували ssh -f user@mysql-server.com -L 33060:mysql-server.com:3306 -N, тоді ви б спрямовували свою функцію Zend connect-to-mysql localhostна порт 33060, який би підключався до mysql-server.comпорта 3306. Ви, очевидно, все ще можете підключитися до localhostпорту 3306, тому ви все одно можете використовувати локальний mysqlсервер.