Я хочу получить доступ к определённому сервису на сервере, но не хочу, чтобы мой открытый порт был просканирован или чтобы пришлось открывать брандмауэр.
Достаточно иметь сервер с открытым одним портом (ssh), чтобы иметь возможность доступа ко всем портам так же, как в локальной среде, или к другим внутренним серверам.
SSH-портфорвардинг, основанный на реализации jsch, использует SSH-канал для проксирования удалённого сервера на локальный порт, обеспечивая внутреннее проникновение и другие функции, такие как шифрование связи. Весь проект очень прост! Он состоит всего из двух классов и менее 200 строк кода. Для работы в фоновом режиме можно использовать screen.
Зависимости: jdk8 maven spring-shell-starter lombok jsch
Обратите внимание, что вам нужно настроить файл .ssh/config, который вы можете найти в поисковых системах. Основные настройки, которые необходимо выполнить: замените самостоятельно
Host mysql
hostname 127.0.0.1
user admin
port 22
identityfile ~/.ssh/id_rsa
#Перейдите в домашний каталог, создайте скрытую папку и добавьте переменную среды
$ cd $HOME;mkdir .bin;echo 'export PATH=$PATH:$HOME/.bin' >> $HOME/.bashrc
#Скачайте исходный код
$ git clone https://gitee.com/bolingit/my_secret_path
#Перейдите в каталог исходного кода и скомпилируйте
$ cd my_secret_path
$ mvn clean package -Dmaven.test.skip=true
#Скопируйте скомпилированный jar-файл в $HOME/.bin и предоставьте права на выполнение
$ cp target/port-forward.jar $HOME/.bin;cd $HOME/.bin;chmod +x port-forward.jar
#Запустите программу
$ port-forward.jar
Во время выполнения:
На основе spring-shell
#Просмотр доступных команд
shell:> help
#Просмотр конфигурации сервисов в ~/.ssh/config
shell:> list
#Или через read-config: чтение указанного ssh config: по умолчанию считывается ~/.ssh/config
shell:> read-config '~/.ssh/config'
#Мониторинг локального порта 13306 с использованием SSH-канала для подключения к настроенному серверу mysql в config и переадресация данных на порт 3306 локального mysql
shell:> open mysql
#Канал SSH открыт
shell:> forward mysql 13306 localhost 3306
#Успешный вывод означает, что запуск прошёл успешно
#Слушаю локальный порт[13306], данные через[mysql] пересылаются в[localhost:3306]
#После открытия канала SSH можно напрямую использовать клиент mysql для доступа к порту 13306 на этом компьютере, который напрямую связан с удаленным сервером mysql. (Не требуется открывать порт 3306 для брандмауэра, только SSH должен быть доступен и SSH-форвардинг включён [по умолчанию включён])
В сочетании с screen для запуска в фоновом режиме
screen port-forward.jar
Используйте Ctrl+a+d, чтобы выйти из окна screen, и используйте screen -r в среде bash, чтобы вернуться в интерфейс port-forward
Реализуйте A, чтобы напрямую получить доступ к порту на этой машине, фактически доступ к C
Эта машина --- A (мост) --- B --- C
Этот компьютер открывает пересылку через A для пересылки в B, B открывает пересылку в указанный порт C
[ ] Добавить автоматический запуск файла конфигурации при запуске
[x] Поддержка сохранения текущей пересылки и ручного восстановления
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )