Перейти к содержимому

Как подключиться к GPU-серверу по SSH и открыть Jupyter через туннель

Арендованный GPU-сервер может иметь публичный IP-адрес, нестандартный SSH-порт и несколько внутренних веб-сервисов. Из-за этого легко перепутать адрес подключения с адресом самого приложения. Разберём схему для личного доступа к Jupyter через SSH-туннель: она позволяет работать из браузера, не публикуя порт блокнота для всего интернета.

Какие реквизиты нужны

Возьмите из панели управления имя пользователя, адрес сервера, внешний SSH-порт и способ аутентификации. Внешний порт не обязательно равен 22: провайдер может перенаправлять другой порт на SSH внутри окружения.

Например, в CloudCompute.ru готовую SSH-команду можно скопировать из карточки инстанса. Это помогает избежать догадок о пользователе и порте. На любом сервисе сначала проверьте обычный вход, а уже затем добавляйте проброс.

Общая форма команды:

ssh -p SSH_PORT USER@SERVER_HOST

Замените SSH_PORT, USER и SERVER_HOST своими реквизитами. Если используется ключ, добавьте параметр -i с путём к закрытому ключу на вашем компьютере. В панель провайдера добавляют публичную часть ключа; закрытая часть должна оставаться у владельца.

Где должен работать Jupyter

Для этой схемы предполагается, что Jupyter установлен в том же сетевом окружении, куда вы входите по SSH, и доступен там по адресу 127.0.0.1:8888. Проверка этого условия особенно важна при использовании контейнеров: localhost в одном контейнере не является localhost другого.

Если готовый шаблон уже запустил Jupyter, сначала проверьте его адрес, порт и параметры доступа. Второй экземпляр без необходимости запускать не нужно. Для самостоятельного запуска установленного JupyterLab под обычным пользователем можно использовать:

jupyter lab --no-browser --ip=127.0.0.1 --port=8888

Оставьте включённой аутентификацию по токену или паролю. Если приложение сообщает другой порт, например из-за занятого 8888, используйте фактически выбранный порт в следующем шаге. Эта команда запускается на сервере.

Создайте туннель с рабочего компьютера

В отдельном локальном терминале выполните:

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:8889:127.0.0.1:8888 -p SSH_PORT USER@SERVER_HOST

Здесь 8889 — порт на вашем компьютере, а 8888 — порт приложения со стороны сервера. Первое 127.0.0.1 ограничивает доступ к локальному концу туннеля вашим компьютером. Параметр -N оставляет SSH-соединение для пересылки трафика без запуска удалённой команды.

Пока терминал открыт, перейдите в браузере на http://127.0.0.1:8889 и войдите с токеном или паролем Jupyter. Если используете адрес с токеном из серверного вывода, замените в нём адрес и порт на локальные, сохранив сам токен. Не публикуйте такую ссылку в переписке или скриншотах.

Как найти причину ошибки

  • SSH не соединяется. Проверьте состояние инстанса, адрес, внешний порт и сетевые ограничения. Работающий ping не подтверждает доступность нужного TCP-порта.
  • Permission denied. Проверьте пользователя и выбранный ключ. Исправление номера порта Jupyter не решит ошибку SSH-аутентификации.
  • Address already in use. Локальный порт 8889 занят. Выберите другой свободный порт слева в параметре -L и откройте его в браузере.
  • Туннель создан, но приложение недоступно. Проверьте, запущен ли Jupyter и доступен ли его порт из SSH-окружения. ExitOnForwardFailure не гарантирует работоспособность самого веб-сервиса.

Что делать после работы

Закрытие SSH-туннеля прерывает этот путь доступа из браузера, но не завершает аренду. Сохраните результаты и проверьте состояние серверных процессов. Если сервер больше не нужен, остановите или удалите его через панель согласно условиям сервиса, предварительно выгрузив важные данные.

Для совместной работы команды понадобится отдельная настройка пользователей и прав доступа. Личный туннель удобен для одного разработчика, которому нужно безопасно открыть конкретный сервис на удалённой машине.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Adblock
detector