Вот ситуация:

Я делаю всю свою работу на Mac.

  1. Существует определенный linux-сервер ' server01 ', который предоставляет доступ к другому linux-серверу ' server02 ' через псевдотерминал

    Итак, чтобы ssh в ' server02 ', я делаю это с моего Mac:

    ssh -t server01 'inline server02'
    
  2. Затем он запрашивает у меня пароль к « server01 »; Я ввожу это, и это регистрирует меня в ' server02 '. Теперь я нахожусь на терминале ' server02 '.

  3. Из ' server02 ' я могу получить доступ к базе данных mysql, которая находится на ' server03 ', с помощью следующей команды mysql:

    mysql --host=server03 --port=4201 --user=myuser --password=mypass mydb
    
  4. Ни ' server01 ', ни ' server02 ', ни мой mac не имеют прямого доступа по SSH к ' server03 '

Теперь я хочу получить доступ к mysql на ' server03 ' с моего Mac напрямую через переадресацию портов. Итак, если я наберу приведенную ниже команду на моем терминале Mac, она должна подключить меня к базе данных mysql на ' server03 ':

mysql --host=localhost --port=4201 --user=myuser --password=mypass mydb

Есть способ сделать это? Любая помощь с благодарностью.

1 ответ1

0

Настройте цепочку переадресаций. Сначала подключитесь к server1 и добавьте пересылку для SSH-подключений к server2:

mac% ssh -f -N -L 10022:server2:22 server1

(Опции -f -N заставят его работать в фоновом режиме.)

Затем подключитесь к серверу 2 через эту пересылку и добавьте пересылку для подключений MySQL к серверу 3:

mac% ssh -f -N -L 14201:server3:4201 -p 10022 -o HostkeyAlias=server2 localhost

(Вы подключаетесь к localhost порту 10022 , и более ранняя пересылка позволяет вам связаться с сервером2. HostkeyAlias не является обязательным, просто паранойя.)

Наконец подключитесь к серверу 3:

mac% mysql --host=localhost --port=14201 ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .