Назад | Перейти на главную страницу

Перенаправление портов для трафика localhost через SSH в базу данных производственного компьютера

В Windows я использовал Bitvise Tunnler для перенаправления всего трафика на локальный хост моего ПК: 33306 через SSH-соединение с моим сервером, а затем оттуда в базу данных сервера mysqlserver: 3306.

PC:33306 -> server:3306 -> databaseserver:3306

Теперь, когда я использую Linux, я обнаружил, что SSH можно легко использовать где угодно и когда угодно:

ssh user@site.tld

Однако я не уверен, как воспроизвести эту переадресацию портов с помощью параметров ssh. Если бы это было просто с одного компьютера на другой, я бы мог сделать что-то вроде этого ...

ssh -L 33306:localhost:3306 user@site.com

ОБНОВИТЬ

Я попытался подключиться с помощью следующего SSH, и соединение, похоже, работает.

ssh -L 33306:localhost:3306 user@otherserver.com

Но phpMyAdmin выдает эту ошибку при попытке подключиться к другому серверу.

#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)

Потом я попробовал

ssh -L 33306:db.server.com:3306 user@otherserver.com

и phpMyAdmin выдал эту ошибку

#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)

Бег netstat -an | Больше показывает

tcp6       0      0 ::1:33306               :::*                    LISTEN   

Опять же, поток процесса должен выглядеть так:

mypc -> server -> otherdbserveronprivatelan

Это должно делать:

ssh -L 33306: сервер базы данных: 3306 user@site.com

Это не проблема ssh, а скорее проблема MySQL. Для MySQL необходимо убедиться, что пользователю предоставлен доступ к этой базе данных. Обычно это делается с помощью:

GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host' IDENTIFIED BY 'password';

Здесь главное отметить 'host' настройка. Поскольку вы туннелируете через SSH, вам необходимо 'username'@'localhost' чтобы работать. Параметр подстановочного знака 'username'@'%' не будет работать для соединений localhost.

Это действительно сработало. Однако я все еще использовал localhost вместо 127.0.0.1 при попытке подключения.

Для командной строки ssh это

ssh -L 3333: mysqlhostname.youdomain.com: 3306 shelluser@yourdomain.com

Затем вы открываете соединения в своем интерфейсе mysql с портом 127.0.0.1 3333. Обратите внимание, что это должен быть 127.0.0.1, а не localhost, поскольку в последнем случае будут использоваться сокеты домена UNIX.

http://blog.dreamhosters.com/kbase/index.cgi?area=2991