У меня следующая ситуация: Есть некоторые хосты, которые доступны только через туннель ssh. Допустим, это
Я могу установить SSH-туннель и привязать 443 порта, необходимые для подключения, к локальным портам:
ssh -L 1443:example.com:443 -L 2443:other.com:443 -A -l username myproxy.com
Пока все работает отлично - когда я звоню https://localhost:1443
, я могу открыть example.com, если я звоню https://localhost:2443
, я могу вызвать other.com
Проблема: некоторые приложения не знают об этом и все равно пытаются подключиться через обычное имя хоста и порт.
Добавив следующие строки в свой hosts
файл, я смогу приблизиться на шаг к окончательному решению:
127.0.0.1 example.com
127.0.0.1 other.com
Это позволяет мне вызывать https://example.com:1443
и https://other.com:2443
в моем браузере - но порт все еще является проблемой. Мне нужно будет сопоставить ОБА домена с моим локальным портом, 443
чтобы это работало для других приложений.
Думаю, мне понадобится локальный прокси-сервер, прослушивающий порт 443
и перенаправляющий трафик на основе имени хоста на один из них 1443
или , 2443
но вот тут я запутался.
Что я могу сделать, чтобы разрешить всем приложениям на моем компьютере использовать только имя хоста/порт, но разрешить трафику проходить через мой туннель SSH?
решение1
Используйте ssh -D
. Это создаст прокси-сервер SOCKS 5 на указанном порту (обычно 1080 или 9050), который вы можете настроить в браузере и получить доступвсечерез SSH-туннель.
Это работает одинаково с OpenSSH, PuTTY (plink), Bitvise Tunnelier и не зависит от каких-либо функций уровня операционной системы.
Например, при ssh -D 9050
запуске Firefox можно настроить следующим образом:
(Хрому может потребоватьсяпараметр командной строкивместо.)