Distributed Train позволяет работать по SSH с Jupyter Server или исполняемой в регионе задачей из:
- локального терминала; 
- Visual Studio Code; 
- PyCharm. 
Подключение по SSH позволяет проводить удаленную отладку.
Скачать SSH ключ и настроить права доступа к нему
Для подключения:
- Перейдите в Jupyter Servers. 
- Напротив Jupyter Server, к которому предполагается подключение, перейти в меню - , выберите SSH.   
- (Опционально) При первом подключении по SSH появится предупреждение о неизвестном хосте. Введите в терминале слово «yes» и нажмите Enter. - Обратите внимание, что менеджер ключей SSH-agent запоминает SSH-ключи, которые ранее вводил пользователь и при попытке повторного подключения может использовать не тот ключ. Поэтому для UNIX-подобных операционных систем рекомендуем перед подключением по SSH выполнить в терминале команду killall ssh-agent. 
- В диалоговом окне Подключение по SSH нажмите Скачать приватный ключ. Ключ сохранится в указанный при сохранении каталог. Примечание- Нет необходимости скачивать приватный ключ для каждого Jupyter Server. Ключ выдается на пользователя. 
- Скопируйте команду и выполните ее в терминале, предварительно заменив значения на свои: ssh test-name.ai0001011-00055@ssh-jupyter.ai.cloud.ru -p 2222 -i <path/to/private_id_rsa_key>- Где: - test-name — название Jupyter Server; 
- ai0001011-11111 — автоматически генерируемый параметр; 
- <path/to/private_id_rsa_key> — путь к приватному ключу на локальной машине. 
 
Если вы работаете на OC Windows, то при копировании пути слеши удалятся. Поэтому необходимо вручную добавить обратные слеши \ в путь.
При возникновении проблем с подключением, рекомендуем к параметрам SSH добавить:
-o HostkeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa
Команда для подключения по SSH будет выглядеть так:
ssh -o HostkeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa buckets.ai0001011-11111@ssh-sr002-jupyter.ai.cloud.ru -p 2222 -i <path/to/private_id_rsa_key.txt>
killall ssh-agent
Изменение прав доступа к файлу с приватным ключом
Рекомендуется изменить права доступа к файлу с приватным ключом, ограничив их возможностью чтения и записи файла только для владельца.
Команды ниже позволят настроить права так, что читать и записывать файл ключа сможет только владелец, а другие пользователи не будут иметь доступ к ключу.
Благодаря этому неавторизованный доступ или случайное изменение приватного ключа становятся невозможны, сохраняются его безопасность и целостность.
В терминале локальной машины выполните команду:
chmod 600 <path/to/key>
Удаленная отладка Jupyter Server по SSH с помощью Visual Studio Code
Для удаленной отладки через Visual Studio Code:
- Установите в Visual Studio Code расширение Remote Development. 
- В Visual Studio Code нажмите F1 и найдите «Add New SSH Host…». 
- Выберите конфигурационный файл, например path/to/private_id_rsa_key.txt, и в пункте Remote-SSH: Connect to Host… введите: ssh name.ai0001011-00560@ssh-jupyter.ai.cloud.ru -p 2222 -i path/to/private_id_rsa_key.txt- В процессе подключения выберите операционную систему Linux. - Если при подключении возникает ошибка, которая указывает на некорректный путь, то в конфигурационном файле для SSH проверьте путь к ключевому файлу. Путь должен иметь вид — path/to/private_id_rsa_key.txt. - Если требуется подключиться по SSH к Jupyter Server нескольким пользователям одного воркспейса, то воспользуйтесь инструкцией. 
- (Опционально) После подключения установите на удаленный хост расширение pylance. 
- Выберите python-интерпретатор. У разных пользователя путь до python-интерпретатора может отличаться. VSCode подскажет рекомендацию в выпадающем списке. Подробности в инструкции. 
Подключиться к Jupyter Server по SSH нескольким пользователям одного воркспейса с помощью Visual Studio Code
При подключении разных пользователей к Jupyter Server в одном воркспейсе конфигурационные файлы SSH попадают в один каталог и перезаписывают друг друга. Из-за этого возникает проблема при подключении разных пользователей по SSH.
- Запустите Visual Studio Code. 
- Нажмите F1 и выберите Connect to Host.... - Откроется выпадающий список хостов. - Запомните хост, для которого хотите настроить vscode-server. 
- Нажмите Ctrl + Shift + P и выберите Open User Settings (JSON). 
- Добавьте кастомный путь в следующем формате: "remote.SSH.serverInstallPath": {"<host>": "/test/location"}
- Укажите требуемый хост из шага 2: "remote.SSH.serverInstallPath": {"sr002": "/home/jovyan/.my-very-own-vscode-server"}
- Подключитесь к требуемому Jupyter Server по SSH. - По указанному пути будет установлен vscode-server. 
Подключиться по SSH, используя PyCharm
- Добавьте SSH private key к SSH-agent, выполнив команду: ssh-add ./mlspace.private_key- Где ./mlspace.private_key — путь до скачанного файла. 
- Выполнить SSH-подключение к Jupyter Server для проверки работоспособности задачи с помощью команды: ssh <username>@<Адрес> -p 2222
- Настройте удаленный интерпретатор Python в соответствии с инструкцией PyCharm . 
- Включите Python Debug Server (например, порт 7777) по инструкции PyCharm. 
- Подключитесь к Python Debug Server удаленно со стороны Jupyter Server, выполнив одно из условий: - получите статический IP-адрес для вашего подключения; 
- используйте утилиту ngrok. 
 Примечание- При отладке использована утилита ngrok tcp 7777. В результате выводится адрес, по которому можно обращаться (например, tcp://2.tcp.ngrok.io:17999) 
- Установите в Jupyter Server библиотеку pydevd-pycharm с помощью следующей команды: pip install pydevd-pycharm~=<version of PyCharm on the local machine>
Передача переменных среды при SSH-подключении к Jupyter Servers
Передача пользовательских переменных среды при подключении по протоколу SSH поддерживается с версии образа Jupyter Server 0.99.
Передавать переменные среды можно через параметры команды SSH или файл конфигурации SSH:
Укажите переменные среды в параметрах команды SSH.
Используйте опцию -o SendEnv для каждой переменной:
ssh -o SendEnv=FOO -o SendEnv=BAR user@hostname
Не используйте SendEnv * для передачи всех переменных среды, это может привести к конфликтам в окружении оболочки (shell) внутри Jupyter Servers и нарушить ее работу.
Рекомендуется указывать только необходимые переменные.
- Скачать SSH ключ и настроить права доступа к нему
- Удаленная отладка Jupyter Server по SSH с помощью Visual Studio Code
- Подключиться к Jupyter Server по SSH нескольким пользователям одного воркспейса с помощью Visual Studio Code
- Подключиться по SSH, используя PyCharm
- Передача переменных среды при SSH-подключении к Jupyter Servers