2016-12-13 5 views
-1

Я следовал the instructions in the web2py manual on how to connect to a remote web2py via ssh tunnel. SSH к серверу, кажется, работает просто отлично:Браузеру не удалось подключиться к web2py через безопасный туннель SSH

[~/prg]$ ssh -L 8002:127.0.0.1:8002 [email protected] 
Linux schemelab2 4.6.5-x86_64-linode71 #2 SMP Fri Jul 29 16:16:25 EDT 2016 x86_64 

The programs included with the Debian GNU/Linux system are free software; 
the exact distribution terms for each program are described in the 
individual files in /usr/share/doc/*/copyright. 

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent 
permitted by applicable law. 
You have new mail. 

но just as others have failed, когда я пытаюсь посетить http://localhost:8002 или https://localhost:8002 я получаю номер соединения отказался сообщения:

channel 3: open failed: connect failed: Connection refused 
channel 4: open failed: connect failed: Connection refused 
channel 3: open failed: connect failed: Connection refused 
channel 3: open failed: connect failed: Connection refused 
channel 3: open failed: connect failed: Connection refused 
channel 3: open failed: connect failed: Connection refused 
channel 4: open failed: connect failed: Connection refused 
channel 3: open failed: connect failed: Connection refused 
channel 3: open failed: connect failed: Connection refused 
channel 3: open failed: connect failed: Connection refused 

Если это помогает любому, here is my sshd_config

Также обратите внимание: telnet localhost 8002 дает

[email protected]:~$ telnet localhost 8002 
Trying ::1... 
Trying 127.0.0.1... 
telnet: Unable to connect to remote host: Connection refused 
[email protected]:~$ 
+0

Возможный дубликат [SSH -L соединение успешно, но перенаправление портов локального хоста не работает »канал 3: открытие не выполнено: подключение не выполнено: соединение отклонено») (http://stackoverflow.com/questions/18705453/ssh-l- connection-success-but-localhost-port-forwarding-not-working-channel) – Kenster

ответ

1

Может быть одной из нескольких возможных причин. Я предполагаю, что вас больше всего интересует доступ к странице администрирования web2py на удаленном сервере, поскольку web2py не позволяет удаленному доступу администратора к незащищенному каналу ... Итак, сначала сначала вы должны убедиться, что IP-таблицы вашего сервера позволяют доступ к услугам на порту, к которому вы пытаетесь подключиться, в противном случае эти решения удаленного подключения, вероятно, не будут работать (за исключением, возможно, плана C). См. Здесь для получения дополнительной информации: https://help.ubuntu.com/community/IptablesHowTo

Во-первых, позвольте мне показать вам, как SSH туннелировался с web2py через десятки серверов, которые я использовал в прошлом. Я буду использовать порт 8889 в моих примерах:

ssh -L 8889:127.0.0.1:8889 [email protected] 

Так же, как с нормальным SSH, вы должны увидеть оболочку вашего сервера (который вы продемонстрировали). Теперь, в же терминал, перейдите в корневой каталог web2py вашего сервера и выполните следующие действия (не закрывайте окно терминала после):

> cd mywebite.com 
> python web2py.py -a password -i 127.0.0.1 -p 8889 
*web2py startup stuff* 

Теперь на локальном посещении http://127.0.0.1:8889/admin браузера и вы должны увидеть страницу администрирования web2py с вашего сервера.

Plan B - Использование самоподписанного SSL сертификата

Если вы по-прежнему возникают проблемы с SSH туннеля, другой вариант, вы можете попробовать использует самозаверяющий сертификат SSL.

Выполнение самозаверяющего сертификата очень легко с OpenSSL, и вы также можете использовать генераторы самозаверяющих генераторов (хотя я не рекомендую это делать), чтобы сэкономить вам еще больше времени.

После того, как у вас есть сгенерированные .crt и .KEY файлов, SFTP на сервер и загружать файлы в корневой каталог web2py вашего сервера (или загрузить их на Dropbox, SSH к серверу, перейдите в ваш корневой каталог web2py и wget ссылки на файлы). Наконец SSH к серверу и выполните следующие действия (не закрывайте окно терминала после):

> cd mywebite.com 
> python web2py.py -a password -p 8889 -i 0.0.0.0 server.crt -k server.key 
*web2py startup stuff* 

Теперь в вашем браузере введите (обратите внимание на HTTPS)https://xxx.xxx.xxx.xxx:8889/admin (ххх ...как ваш IP-адрес сервера), или вы можете сделать https://mywebsite.com:8889/admin, если у вас уже есть настройка имени домена.

Теперь вы должны увидеть предупреждение безопасности SSL в своем браузере. Просто проигнорируйте это предупреждение и добавьте исключение, и, наконец, вы сможете увидеть страницу администрирования web2py со своего сервера.

План C - Изменить источник web2py

Это наименее рекомендуемый план, чтобы позволить администратору по незащищенному каналу, и должны использоваться в качестве последнего средства. Вы можете просто отредактировать часть исходного кода web2py, которая отключает администратора, просто добавив одну строку кода. В < корневого каталога web2py сервера> \ приложения \ Admin \ модель \ access.py (вокруг линии 21) поставила request.is_local = True до части, которая отключает админ через незащищенный канал:

'...' 
request.is_local=True #TESTING ONLY. COMMENT OUT OR REMOVE IN PRODUCTION! 
if request.env.http_x_forwarded_for or request.is_https: 
    session.secure() 
elif not request.is_local and not DEMO_MODE: 
    raise HTTP(200, T('Admin is disabled because insecure channel')) 
'...' 

Теперь вы можете получить доступ к администратору web2py вашего сервера, просто посетив http://xxx.xxx.xxx.xxx:8889/admin (xxx ... будучи вашим IP-адресом сервера), или вы можете сделать http://mywebsite.com:8889/admin, если у вас уже есть настройка вашего домена.

Обратите внимание, что это быстрое и грязное решение и должно использоваться только временно и для тестирования. Не забудьте удалить или прокомментировать эту линию в производстве!

+0

спасибо. Причина, по которой она не удалась, - это [в книге web2py есть ошибка] (http://web2py.com/books/default/chapter/29/13/deployment-recipes#Securing-sessions-and-admin) ... если вы заметили они помещают амперсанд после * обеих * первых двух команд ssh, когда должен быть только один после первого. –

 Смежные вопросы

  • Нет связанных вопросов^_^