SSH-перанакіраванне слухае лакальны порт 13306, але mysql усё яшчэ падключаецца да лакальнай базы даных—ці паведамляе, што яго лакальны сокет адсутнічае. У Unix кліент MySQL, якому далі localhost, можа выбраць Unix-сокет замест TCP. Указанне порта не абавязкова змяняе гэты выбар.

Для ўжо ўхваленага TCP-перанакіравання зрабіце пратакол яўным:

mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
  --user=dbuser --password

Імя карыстальніка паказана для прыкладу; параметр пароля запытвае інтэрактыўны ўвод. Каманда падключаецца да лакальнага TCP-слухача замест Unix-сокета.

Трымайце два ўваходы асобна

Фіксаваны SSH-маршрут можа мець такую форму:

ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]

SSH-сервер шлюза дасягае db.internal:3306. Затым MySQL аўтэнтыфікуе ўліковы запіс базы даных праз гэты паток байтаў. Прыняты SSH-ключ не дае ўваходу ў базу даных, а абмежаванні крыніцы базы даных бачаць, што злучэнне прыходзіць з таго боку маршруту.

Гэта фіксаваны TCP-адаптар, а не налада SOCKS, якую спажывае mysql. Праграме не патрэбныя SOCKS-перамовы, бо ў канчатковай кропкі перанакіравання адна загадзя вызначаная мэта.

Захоўвайце мэтавую ідэнтычнасць TLS базы даных і палітыку сертыфікатаў там, дзе яны выкарыстоўваюцца. Падключэнне сокета да loopback не робіць сертыфікат базы даных сапраўдным для іншай назвы службы. Паспяховае лакальнае TCP-злучэнне вырашае выбар транспарту, а не наступную аўтэнтыфікацыю базы даных ці праверкі TLS.

Падобныя артыкулы