Предполагая, что вы выполнили эту команду: 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сервер.