В 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.