Доступ к веб-интерфейсу на удаленном сервере Linux без использования SSH

#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:

Хорошо, если вам нужен прокси системного уровня, который работает в вашей локальной сети, вы можете сделать следующее:

  1. на вашей рабочей станции установите proxychains-ng
  2. измените proxychains.conf следующим образом:
 [ProxyList]
socks4  127.0.0.1 8001
  
  1. на вашей рабочей станции запустите:
 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-клиент.