Ситуация: Я хочу туннелировать сеансы SSH через HTTPS. У меня очень ограниченный брандмауэр / прокси, который разрешает только трафик HTTP, FTP и HTTPS.
Что работает: Настройка туннеля через прокси-сервер к удаленному Linux-серверу, у которого sshd прослушивает порт 443
Эта проблема: У меня должен быть веб-сервер (светлый), работающий на порту 443. HTTPS-трафик на другие порты запрещен прокси-сервером.
Идеи на данный момент: Настройте виртуальный хост и проксируйте все входящие запросы на localhost: (например, 22)
$HTTP["host"] == "tunnel.mylinux.box" {
proxy.server = (
"" => (("host" => "127.0.0.1", "port" => 22))
)
}
К сожалению, это не сработает. Я что-то делаю не так или есть причина, по которой это не сработает?
Вы можете проделать этот трюк с помощью Perl:
sslh - переключение входящего соединения между SSH и SSL / HTTPS серверами
Возможно, вы захотите заглянуть в C реализация sslh.
С веб-сайта:
sslh позволяет принимать как HTTPS-, так и SSH-соединения на одном и том же порте. Это позволяет подключаться к серверу SSH через порт 443 (например, изнутри корпоративного брандмауэра), продолжая обслуживать HTTPS на этом порту. Эта функция уже реализована в виде сценария Perl.
С sslh есть две проблемы:
- Это на Perl. Это означает, что он довольно требователен к оперативной памяти и, вероятно, не очень быстр.
- Не справляется с сбросом привилегий, что довольно сомнительно.Очевидным решением обеих проблем была повторная реализация его на C, о чем и идет речь.