2013-06-24 3 views
1

С моей локальной машине, у меня есть доступ по SSH к серверу А. один раз на сервере А, я подключиться к MySQL на сервере B через порт 3306 на сервере B.Tunnel подключение к Mysql без доступа SSH

mysql -h <B.hostname> -P 3306 -u <username> -p 

У меня нет доступа ssh к серверу B, либо с моего локального компьютера, либо с сервера A.

Что бы я хотел сделать, так это получить доступ к mysql на сервере B с моей локальной машины. Каждая найденная мной туннельная/переадресационная связь предполагает, что я могу ssh на сервер B.

ответ

3

ssh's -L принимает локальный порт, удаленное имя хоста для подключения от к серверу ssh, к которому вы подключаетесь, и к удаленному порту. В этом случае, вы будете работать:

ssh -L 3307:B.hostname:3306 A.hostname

Это позволит сделать SSH подключиться к A, и при дальнейшем подключении к порту 3307 с помощью локального клиента MySQL (mysql -H localhost -P 3307 -u ...), SSHD А будет инициировать соединение B.hostname: 3306 для вас.

+1

большое спасибо. по какой-то причине мне пришлось использовать 127.0.0.1, а не localhost на втором этапе, но это сработало. – Dan

+0

Это может быть по нескольким причинам. Например, localhost может разрешить как IPv4 (127.0.0.1), так и IPv6-адрес (:: 1), ssh может прослушивать только 127.0.0.1:3307, а mysql может попытаться подключить [:: 1]: 3307 вместо этого. – oh7lzb

0

Похоже, вам нужно использовать удаленную переадресацию портов. Попробуйте это на локальном хосте:

[auto]ssh -R 1111:127.0.0.1:2222 -f -N -4Cp1234 [email protected] 

Таким образом, вы получаете на свой localhost:2222 (местная машина) все, что вы получите на localhost:1111 (если вы вошли в систему на servername.net), с трафиком происходит по SSH на servername.net:1234.

Если ваш «сервер A» может каким-то образом получить доступ к «серверу B», и вы можете получить доступ к «серверу A» через SSH, что, вероятно, поможет вам.