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

туннель ssh отклоняет подключения к локально привязанному адресу mysqld

Я довольно часто использую переадресацию портов для подключения к удаленным базам данных с помощью следующей команды:

ssh -L 3306:127.0.0.1:3306 -N foo@remote.ip

Если я считаю, что проблема связана с этим конкретным сервером, демон mysql привязан к частному IP-адресу (например, 192.168.x.x) скорее, чем localhost.

Это единственное, что я обнаружил, глядя на результат при туннелировании с -v -v параметры.

Пример:

ssh -L 3306:127.0.0.1:3306 -N foo@remote.ip -v -v

И когда я пытаюсь использовать соединение локально, при отладке получаю следующее:

debug1: Connection to port 3306 forwarding to 127.0.0.1 port 3306 requested.
debug2: fd 7 setting TCP_NODELAY
debug2: fd 7 setting O_NONBLOCK
debug1: channel 2: new [direct-tcpip]
channel 2: open failed: connect failed: Connection refused
debug2: channel 2: zombie
debug2: channel 2: garbage collecting
debug1: channel 2: free: direct-tcpip: listening port 3306 for 127.0.0.1 port 3306, connect from 127.0.0.1 port 47520 to 127.0.0.1 port 3306, nchannels 3

Я не новичок в использовании переадресации портов и успешно использую его в различных других конфигурациях, но этот сервер, в частности, поставил меня в тупик.

Любая помощь приветствуется.

Редактировать: Стоит отметить, что частный IP-адрес назначается поставщиком облачных услуг и фактически не отображается в ifconfig/ip вывод. Да, на eth0: 1

Edit2: Вывод ошибки Mysql:

200220 20:08:12 [Warning] IP address '192.168.x.x' could not be resolved: Name or service not known

Edit3:

ifconfig вывод:

# ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:XX  
          inet addr:xx.xx.xx.58  Bcast:xx.xx.xx.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          inet6 addr: xxxx:xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8786400702 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8059726929 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1072200268259 (1.0 TB)  TX bytes:47891146981425 (47.8 TB)

eth0:1    Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          inet addr:192.168.xx.xx  Bcast:192.168.255.255  Mask:255.255.128.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:94 errors:0 dropped:0 overruns:0 frame:0
          TX packets:94 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5360 (5.3 KB)  TX bytes:5360 (5.3 KB)

Вывод mysql.cnf:

[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /var/tmpfs
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 192.168.xx.xx

Простое решение - установить (если у вас есть правильная версия), несколько bind-addresses:

bind-address        = 192.168.x.x,127.0.0.1

Если нет, вы можете установить

bind-address        = 0.0.0.0

НО - Последнее также заставит MySQL прослушивать ваш общедоступный адрес x.x.x.58, что представляет собой значительный риск для безопасности и не рекомендуется. Если необходимо, вы должны предпринять шаги, чтобы гарантировать, что подключения к этому порту заблокированы (iptables, ufw и т. Д.), И протестировать их из удаленного места.