- У меня есть компьютер (назовем его A) в локальной сети без статического IP-адреса, доступного извне. (SSH порт
AAAAA
) - У меня есть веб-сервер, доступ к которому я хочу получить извне
- У меня есть сервер (B), доступный из Интернета, который также запускает веб-сервер (порт SSH:
BBBBB
) - Я хочу иметь возможность доступа к веб-серверу от A до B с любого компьютера с веб-браузером.
Я успешно использую удаленное туннелирование SSH со следующей настройкой:
на машине А:
$> ssh -f -N -p BBBBB -R 0.0.0.0:9000:localhost:AAAAA userB@B.B.B.B
на машине C:
$> ssh -f -p 9000 -D 9001 -N userA@B.B.B.B
в веб-браузере машины C,
manual proxy configuration SOCKS host: localhost, port 9001, SOCKS v5
Это работает очень хорошо, но очень сложно запускать команду SSH на C и каждый раз менять настройки в веб-браузере ...
Так что я говорил об этом с кем-то, кто сказал мне, что, возможно, я мог бы упростить настройку, выполнив часть, выполняемую на машине C, непосредственно на сервере B, с помощью некоторой веб-конфигурации в nginx на веб-сервере B. Итак, теперь я попробовал это:
- На А, как и раньше
на B:
$> ssh -f -p 9000 -D 9001 -N userA@127.0.0.1
в конфиге nginx B:
$> cat /etc/nginx/sites-available/default:
upstream tunnel { server 127.0.0.1:9000; } server { listen 80; [...] location /A { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://tunnel; } [...] } server { listen 443 ssl; [...] location /A { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://tunnel; } [...] }
Насколько я понимаю, из веб-браузера на компьютере, подключенном к Интернету, запрос http://B.B.B.B/A
должен туннелировать до 127.0.0.1:9000
который является перенаправленным портом для моей машины A, что дает мне доступ к веб-серверу на A ,
Что-то не так в этой настройке, хотя, когда я пытаюсь подключиться к http://B.B.B.B/A
я получаю долгое время загрузки (около минуты), за которым следует пустая страница со следующим сообщением об ошибке:
SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3 Protocol mismatch.
Я немного погуглил эту ошибку и нашел несколько постов с относительно похожими проблемами, но, честно говоря, с моими (очень) ограниченными навыками в такого рода вещах я теряюсь, когда пытаюсь спроецировать их исправление на мой вариант использования. ... Кто-нибудь может мне помочь?