У меня есть удаленный сервер, который только выставляет SSH. Это имеет сервисы, работающие на других портах, например, база данных по порту 3306. К этим портам нельзя получить доступ удаленно, но доступны из контекста сервера (localhost:3306
).
Используя ssh -L
Я могу получить доступ к единственному порту на удаленном сервере. Но как я могу сделать все эти порты доступными для моей локальной машины по ssh/sshuttle соединению?
На удаленном сервере определяют вторичный IP-адрес, например, 10.0.0.1, который указывает на себя. (Тот же путь 127.0.0.1 делает.)
На Вашей локальной машине создайте свое соединение шаттла следующим образом:
sshuttle -r user@remote 10.0.0.1
# "user" is your username on the remote machine
# "remote" is the name or IP address of the remote machine
Можно теперь получить доступ к удаленному серверу в этих 10.0.0.1 адресах. Поскольку это понимает соединения от 10.0.0.1, чтобы быть "собой", все порты доступны в том адресе. (Они прекращают быть доступными, как только Вы закрываете соединение шаттла.)
Можно подтвердить это со следующими командами:
nmap remote # returns only ssh port
nmap 10.0.0.1 # returns all ports
Можно теперь соединиться с базой данных с адресом 10.0.0.1:3306
. Например, если это - база данных MySQL, можно подключить к нему uing MySQL Workbench.
Если этот подход подходит Вам, можно хотеть исследовать охоту использования для управления подключениями шаттла.