1
  • У меня есть компьютер (назовем его 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.

Я немного погуглил эту ошибку и нашел несколько постов с относительно похожими проблемами, но, честно говоря, с моими (очень) ограниченными навыками в такого рода вещах я теряюсь, когда пытаюсь спроецировать их исправление на мой вариант использования. ... Кто-нибудь может мне помочь?

0