- У меня есть компьютер (назовем его А) в локальной сети без статического IP-адреса, доступного извне. (Порт SSH
AAAAA
) - У меня есть веб-сервер, к которому я хочу иметь доступ извне.
- У меня есть сервер (B), доступный из Интернета, на котором также работает веб-сервер (порт ssh:
BBBBB
) - Я хочу иметь возможность доступа к веб-серверу на точках A-B с любого компьютера, где есть веб-браузер.
Я успешно использую удаленное туннелирование SSH со следующей настройкой:
на машине А:
$> ssh -f -N -p BBBBB -R 0.0.0.0:9000:localhost:AAAAA [email protected]
на машине C:
$> ssh -f -p 9000 -D 9001 -N [email protected]
в веб-браузере машины C,
manual proxy configuration SOCKS host: localhost, port 9001, SOCKS v5
Это работает очень хорошо, но очень утомительно каждый раз запускать команду SSH на C и менять настройки в веб-браузере...
Поэтому я поговорил об этом с кем-то, и он сказал мне, что я, вероятно, мог бы упростить настройку, если бы часть, выполненную на машине C, была выполнена непосредственно на сервере B, с некоторой веб-конфигурацией в nginx на веб-сервере B. Итак, теперь я попробовал это:
- На А, то же самое, что и раньше
на Б:
$> ssh -f -p 9000 -D 9001 -N [email protected]
в конфигурации 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.
Я немного погуглил эту ошибку и нашел несколько сообщений с относительно похожими проблемами, но, честно говоря, с моими (очень) ограниченными навыками в таких вещах я теряюсь, пытаясь спроецировать их исправление на мой вариант использования... Может ли кто-нибудь мне помочь?