#linux #user-interface #unix #web #networking
#linux #пользовательский интерфейс #unix #веб #сеть
Вопрос:
Предположим, что вы запускаете приложение с веб-интерфейсом (например, Jupyter, интерфейс панели инструментов Kubernetes) на сервере Linux / UNIX (sarah@10.0.0.100 ). На сервере вы подтверждаете, что можете получить доступ к веб-интерфейсу, открыв http:/ / localhost:8001 в Firefox.
У вас есть отдельные рабочие станции в одной сети. Есть ли какой-либо простой способ получить доступ к веб-интерфейсу, просто открыв http: / / 10.0.0.100:8001 из веб-браузера на рабочих станциях?
Обходной путь.Установите SSH-соединение с помощью туннелирования портов:
$ ssh -N -L 8001:localhost:8001 sarah@10.0.0.100
Аналогичное соединение можно установить с помощью других инструментов SSH-клиента, таких как PuTTY. Откройте http:/ / localhost:8001 из веб-браузера на вашей рабочей станции.
Но каждый раз устанавливать SSH-соединение утомительно, поэтому мне нужна идея получше.
Комментарии:
1. Да, и если ничто не блокирует порт, он должен работать сразу. На сервере убедитесь, что ничто не блокирует порт 8001 (брандмауэр, iptables, SELinux, …). Тогда браузер в клиентской системе будет в порядке, чтобы получить к нему доступ с ` IP-АДРЕС: 8001
2. В таком случае, есть ли какой-либо способ изменить порт на стороне сервера Linux? Скажем, весь входящий и исходящий трафик с порта 8001 перемещается на порт 8080 (HTTPS) на сервере. Предположим, что клиенты (портативные рабочие станции) имеют доступ к 10.0.0.100: 8080.
Ответ №1:
почему бы просто не сделать это?
jupyter notebook --ip=0.0.0.0 --port=8001
Комментарии:
1. Пожалуйста, перечитайте исходный вопрос: речь идет о UNIX (подобном) уровне операционной системы, а не о конкретном приложении. Очевидно, что ваша команда не работает с пользовательским интерфейсом Kubernetes Dashboard и многими другими приложениями с веб-интерфейсами.
Ответ №2:
Хорошо, если вам нужен прокси системного уровня, который работает в вашей локальной сети, вы можете сделать следующее:
- на вашей рабочей станции установите proxychains-ng
- измените proxychains.conf следующим образом:
[ProxyList]
socks4 127.0.0.1 8001
- на вашей рабочей станции запустите:
proxychains4 -f proxychains.conf ssh -L 8001:0.0.0.0:8001 sarah@10.0.0.100
Теперь вы можете нажать http://<your_workstation>:8001
из любого места в вашей локальной сети, и он будет проксирован к вашей удаленной системе.
Чтобы ваш туннель всегда был подключен, вы можете установить autossh
и заменить команду прокси на:
proxychains4 -f proxychains.conf
autossh -t -M 0
-o 'ServerAliveInterval=30'
-o 'ServerAliveCountMax=10000'
-o 'SendEnv=TERM_PROGRAM'
-o 'ExitOnForwardFailure=no'
-o 'TCPKeepAlive=yes'
-L 8001:0.0.0.0:8001
sarah@10.0.0.100
Вы также должны рассмотреть возможность использования аутентификации на основе ключа для этого.
Комментарии:
1. Вы уверены в запуске proxychains4 на рабочей станции (клиентском ноутбуке) , а не на сервере, на котором размещены приложения веб-интерфейса? Я сделал это на сервере и получил сообщение об ошибке:
[proxychains] Strict chain ... 127.0.0.1:8001 ... timeout
.2. Я запустил это на своем macbook с Linux-сервером на другой стороне. Это работает. Возможно, вам потребуется запустить ваш сервер Jupyter, явно привязанный к порту и доступный для всех интерфейсов, потому что это то, что я сделал.
3. Тогда туннелирование SSH кажется проще; он использует только SSH-клиент.