У меня есть сервер MySQL на hostD. Я могу получить доступ к hostD через hostC, hostC через hostB, hostB через hostA, и я получаю доступ к hostA с помощью замазки на моем домашнем устройстве

home(windows)-->hostA-->hostB-->hostC--hostD(mySQL Server)

Моя цель - получить доступ к серверу с моего домашнего устройства.

Другая проблема заключается в том, что у меня нет корневого доступа к A, B и C. Теперь я экспериментировал с файлом '.ssh/config', и вот что я получил до сих пор:

 Host BTunnel
  HostName hostB
  LocalForward 3306 localhost:3306

 Host CTunnel
  HostName hostC
  LocalForward 3306 localhost:3306

 Host DTunnel
  HostName hostD
  LocalForward 3306 localhost:3306

Таким образом, я могу подключиться из Putty -> hostA и ввести последовательно:

ssh BTunnel
ssh CTunnel
ssh DTunnel

Чтобы получить туннель от А до D. Но мне бы хотелось иметь решение, где я набираю только 1 команду от хоста А, чтобы получить туннель к D, возможно, путем объединения существующих псевдонимов хоста.

Кто-нибудь может предложить решение?

1 ответ1

0

Ну, вы можете просто цепочки команд. Вы можете сделать это даже без каких-либо файлов конфигурации. Выполнить в hostA:

ssh -L 3306:localhost:3306 hostB ssh -L 3306:localhost:3306 hostC ssh -NL 3306:localhost:3306 hostD

Если у вас есть конфиги и открытые ключи, вы можете сделать:

ssh BTunnel ssh CTunnel ssh -N DTunnel

(Я бы включил -N в последнюю команду, потому что мне не нужен доступ к оболочке, только переадресация.) Вы можете сделать псевдоним для него в .bashrc (или подобном):

alias mytunnel="ssh BTunnel ssh CTunnel ssh -N DTunnel"

Вы можете начать с mytunnel сейчас.

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