В настоящее время у меня есть образ docker, работающий под управлением Alpine Linux внутри частной сети. У меня есть root-доступ к этому образу docker.
В той же частной сети есть экземпляр базы данных. Только системы в той же сети могут получить доступ к базе данных (Пример: вышеупомянутый образ docker)
Сейчас, чтобы отладить что-то внутри базы данных, мне пришлось подключиться по SSH к образу docker, а затем запустить инструменты командной строки изнутри этого образа docker. Это довольно сложно
Есть ли способ подключиться к этой базе данных, используя инструменты разработки на моем локальном ПК? Я не уверен, является ли это термином переадресации портов или проксирования
решение1
Я предполагаю, что вы подключаетесь следующим образом:
ssh user@docker
Тебе нужно -L
:
ssh -L port1:server:port2 user@docker
где server:port2
адрес и порт базы данных, как видно из контейнера Docker (этот адрес будет разрешентам).
Ваш локальный ssh
будет прослушивать локально на порту TCP port1
. Вы выбираете порт.
Теперь подключитесь с локального компьютера к localhost:port1
(или 127.0.0.1:port1
), и соединение будет достигнуто server:port2
из docker
. server
Машина увидит, что оно исходит из docker
. Это называется «локальная переадресация портов».
Таким образом, локальный инструмент может получить доступ к удаленной базе данных. Инструмент должен подключиться к localhost:port1
.
Примечания:
- Это работает только для TCP,не UDP.
- Другие машины в вашей локальной сети не смогут использовать ваш локальный компьютер в качестве ретранслятора для доступа к базе данных. Вероятно, это то, что вам нужно. Если нет, то проверьте этот вопрос:Могу ли я использовать SSH для обслуживания туннелированного ресурса в локальной сети?
- Использовать
ssh -N …
для создания туннелябез выполнения удаленной команды. - Используйте
autossh
для автоматизации этого процесса. - Порты с номерами ниже 1024 являются привилегированными. Как обычный пользователь вы не можете привязаться к такому порту. Выбирайте
port1
соответственно. - Настройка
AllowTcpForwarding
наsshd_config
сервере SSH (docker
в вашем случае) может быть использована для запрета переадресации портов. По умолчанию разрешено, так что, вероятно, это будет работать из коробки.