detachbox
СтраницыПодключение к боксу по SSH

Подключение к боксу по SSH

Каждый бокс принимает SSH по адресу ssh <box>@ssh.detachbox.com с ключами вашего аккаунта. Добавьте ключ один раз, и его пустит каждый ваш бокс. Проброс портов, rsync и Remote-SSH в VS Code или Cursor работают через тот же адрес.

Страница бокса shipyard: процессор, память и диск в реальном времени, SSH-команда, агент и аккаунт Claude, под которым он входит, и переключатели того, что делать, когда агент остановился.

Добавьте SSH-ключ

Боксы пускают только по ключам, без паролей.

  1. На своём компьютере выведите публичный ключ:

    cat ~/.ssh/id_ed25519.pub
    

    Ключа ещё нет? Создайте его командой ssh-keygen -t ed25519.

  2. В кабинете откройте SSH-ключи и нажмите Добавить SSH-ключ.

  3. Вставьте строку целиком. Она начинается с ssh-ed25519, ssh-rsa или ecdsa-sha2.

  4. Назовите ключ, например laptop. Если оставить имя пустым, возьмётся комментарий ключа.

  5. Нажмите Добавить SSH-ключ.

Каждый ключ аккаунта открывает каждый ваш бокс, и каждый бокс подхватывает ключ сам. В аккаунте может быть до 50 ключей.

Вставляйте только файл .pub. Кабинет отклоняет приватный ключ, а приватная половина никогда не покидает ваш ноутбук.

Импортируйте ключи с GitHub

  1. На странице SSH-ключи нажмите Импорт с GitHub.
  2. Введите имя пользователя GitHub.
  3. Нажмите Импортировать ключи.

Кабинет забирает все публичные ключи с github.com/<username>.keys. Ключи, которые уже есть в аккаунте, пропускаются.

Подключитесь к боксу

Скопируйте команду из блока Подключение по SSH на вкладке Обзор бокса и выполните её:

ssh [email protected]

Вы попадаете в бокс как пользователь dev. Чтобы не набирать адрес, добавьте бокс в ~/.ssh/config:

Host my-box
  HostName ssh.detachbox.com
  User my-box

Дальше хватит ssh my-box.

Сверьте ключ хоста

При первом подключении SSH попросит доверять хосту. Откройте Сверить ключ хоста в блоке Подключение по SSH и сравните отпечаток там с тем, что выводит SSH. Отвечайте yes, только если они совпадают.

Вкладки терминала по SSH

Каждая вкладка браузера — это сессия tmux на боксе, поэтому по SSH доступны те же сессии:

tmux ls
tmux attach -t <session>

Отключитесь через Ctrl+B, затем D. Агент продолжит работать.

Выполните команду на боксе

ssh [email protected] 'docker ps'

Переменные DETACHBOX_* из box.env загружаются и в таких шеллах. Они перечислены в разделе Агенты.

Проброс dev-сервера или базы данных

Пробросьте порт на свой компьютер через -L:

ssh -L 3000:localhost:3000 [email protected]

Откройте localhost:3000 на ноутбуке, чтобы увидеть приложение, которое работает в боксе. На странице бокса эта команда есть в блоке Проброс dev-сервера.

Для базы данных или любого обычного TCP-порта пробрасывайте без шелла:

ssh -N -L 5432:localhost:5432 [email protected]

Веб-приложениям туннель не нужен: адрес превью работает без него и открывается и на телефоне.

Скопируйте папку через rsync

Браузерный терминал не принимает папки. Копируйте папку через rsync:

rsync -az ./my-folder/ [email protected]:~/my-folder/

Поменяйте пути местами, чтобы скопировать из бокса на компьютер.

Откройте бокс в VS Code или Cursor

Оба редактора подключаются через расширение Remote-SSH с вашим собственным ключом.

  1. Добавьте ключ на странице SSH-ключи.
  2. В редакторе подключитесь к хосту [email protected].

Из браузерного терминала откройте путь к файлу в просмотрщике и нажмите Открыть в VS Code или Открыть в Cursor. Редактор откроет этот файл на нужной строке через Remote-SSH. Если подключиться не получается, добавьте ключ в разделе SSH-ключи.

Удалите ключ

  1. На странице SSH-ключи откройте меню ключа и нажмите Удалить ключ.
  2. Подтвердите.

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

Permission denied?

Permission denied (publickey) значит, что бокс не получил знакомый ему ключ. Проверьте, что ключ на вашем компьютере есть в списке SSH-ключи, а пользователь в команде совпадает с именем бокса. Другие решения в разделе Если что-то не работает.