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

В этом посте я расскажу, как я подключаюсь к своей рабочей машине и запускаю рабочие нагрузки Jupyter Notebook, когда я работаю удаленно.

SSH на удаленную машину

Шаг 1: подключитесь к удаленному компьютеру по ssh и запустите Jupyter Notebook на локальный порт с параметром --no-browser.

user@local_machine$ ssh user@remote_machine 
user@remote_machine$ jupyter notebook --no-browser --port=8889

Настройка SSH-туннеля

Шаг 2 - настроить SSH-туннель от вашего локального компьютера к port 8889 на удаленном компьютере, на котором обслуживается Jupyter Notebook.

user@local_machine$ ssh -N -L localhost:8888:localhost:8889 user@remote_mahcine

Вот разбивка параметров ssh

  • -N Не выполнять удаленную команду. Это полезно только для переадресации портов.
  • -L local_socket: remote_socket
    Указывает, что подключения к данному TCP-порту или сокету Unix на локальном (клиентском) хосте должны быть перенаправлены на данный хост и порт или сокет Unix на удаленной стороне. Это работает путем выделения сокета для прослушивания либо TCP-порта на локальной стороне, необязательно привязанного к указанному bind_address, либо к сокету Unix. Всякий раз, когда выполняется соединение с локальным портом или сокетом, соединение пересылается по защищенному каналу, и с удаленного компьютера устанавливается соединение либо с хост-портом hostport, либо с Unix-сокетом remote_socket.
  • Перенаправление портов также можно указать в файле конфигурации. Только суперпользователь может пересылать привилегированные порты. Адреса IPv6 можно указать, заключив адрес в квадратные скобки.
  • По умолчанию локальный порт привязан в соответствии с настройкой GatewayPorts. Однако явный bind_address может использоваться для привязки соединения к определенному адресу. Bind_address «localhost» указывает, что порт прослушивания должен быть привязан только для локального использования, в то время как пустой адрес или «*» указывает, что порт должен быть доступен для всех интерфейсов.

Обратите внимание, что запуск SSH-туннеля с -N не будет регистрировать никакие выходные данные, пока вы не получите сообщение об ошибке, это означает, что вы установили туннель.

Загрузите Jupyter Notebook в локальный браузер

На локальном компьютере браузер загрузит localhost:8888, а Jupyter Notebook с удаленного компьютера загрузится должным образом.