Перейти к документации
ДокументацияКоманды SSH

Команды SSH

Дайте агенту выполнять команды по SSH на публичном сервере, а приватный ключ оставьте у Sallyport.

На этой странице

Агент присылает команду. Sallyport входит на сервер с вашим ключом или паролем, выполняет её и возвращает вывод. Ни ключа, ни пароля агент не видит.

Добавьте хост

  • Откройте Подключить SSH-хост. Из раздела Ключи сервисов путь такой: «Добавить ключ сервиса», затем «Хост SSH» в поле «Источник ключа».
  • Введите «Название подключения». Агенты видят его, и инструмент хоста назван по нему.
  • Укажите «Публичное имя хоста или IP-адрес», «Порт SSH» и «Пользователь SSH». Порт 22, если вы его не меняли.
  • Если рабочих пространств несколько, выберите нужное в поле «Рабочее пространство». В поле «Среда» выберите «Рабочая» или «Тестовая».
  • В блоке «Вход по» оставьте «Закрытый ключ» и вставьте «Закрытый ключ OpenSSH». Если у ключа есть парольная фраза, введите её в поле «Парольная фраза ключа (необязательно)».
  • Сервер, который не принимает ключ, например хостинг, роутер или устройство: выберите «Пароль» и введите «Пароль SSH». Sallyport отвечает им и на запрос пароля, и на интерактивный запрос сервера.
  • Нажмите «Сохранить SSH-подключение». Ключ только записывается, прочитать его обратно нельзя.

При сохранении Sallyport проверяет адрес. Частный адрес или адрес самого Sallyport будет отклонён.

Проверьте подлинность сервера

В блоке «Проверка ключа сервера (необязательно)» два варианта.

ВариантЧто происходит
Сохранить первый ключ после успешной SSH-аутентификацииВариант по умолчанию. Sallyport запоминает отпечаток ключа сервера при первом успешном входе и отклоняет любую его смену.
Проверять заранее подтверждённый отпечатокВставьте отпечаток SHA256:, полученный от владельца сервера, в поле «Подтверждённый SHA-256-отпечаток сервера». Sallyport подключится только к серверу с этим ключом.

Страница подключения показывает отпечаток в строке «Проверка ключа сервера». Если ключ сервера сменился, вызовы останавливаются с host_key и команда не выполняется.

Сначала сверьте новый ключ с владельцем сервера. Затем откройте страницу подключения, нажмите «Заменить закреплённый ключ» в строке «Проверка ключа сервера», вставьте новый отпечаток SHA256: и нажмите «Закрепить этот ключ». Подтверждения, данные для старого ключа, перестают действовать. Скрипт делает то же с ключом консоли (REST API): GET /v1/ssh-hosts показывает ваши хосты с их id, а PATCH /v1/ssh-hosts/{id} с полем known_host_key закрепляет новый ключ.

Shell · найдите id хоста и закрепите новый ключ
export SP_CONSOLE_KEY='sp_ck_…'

curl --fail-with-body -H "Authorization: Bearer $SP_CONSOLE_KEY" \
  https://mcp.sallyport.cloud/v1/ssh-hosts

curl --fail-with-body -X PATCH -H "Authorization: Bearer $SP_CONSOLE_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"known_host_key": "SHA256:<new fingerprint>"}' \
  "https://mcp.sallyport.cloud/v1/ssh-hosts/<host-id>"

Выберите, какие команды ждут вас

Новое подключение получают все активные агенты его рабочего пространства и среды. По умолчанию команды выполняются без вопросов.

Чтобы подтверждать команды, откройте агента в разделе Агенты, найдите подключение в списке «Доступ» и включите «Спрашивать каждый раз». Или настройте классы по отдельности:

  • Чтение: простые команды чтения из фиксированного списка, например ls, cat, tail, git status, docker ps и kubectl get.
  • Необратимое: команды вроде rm, dd, mkfs, kubectl delete и docker system prune.
  • Изменение: всё остальное. Конвейер, ;, перенаправление, $, шаблон имён, sudo или sh -c делают команду изменением, даже если она только читает.

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

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

Агент остаётся на своём MCP-подключении к Sallyport. list_access называет инструмент хоста, его имя оканчивается на _exec. Инструмент принимает такие аргументы:

АргументЗначение
cmdКоманда целиком, как вы набрали бы её в оболочке. Обязательный.
timeout_sОстанавливает команду через столько секунд. В любом случае команда останавливается через 5 минут.
intentОдно предложение о цели вызова, его видит подтверждающий.
call_idПродолжает вызов, который ждёт подтверждения.
max_inline_bytesСколько вывода приходит в ответе. По умолчанию 24 КиБ.
Аргументы вызова инструмента хоста
{
  "cmd": "df -h",
  "intent": "Check free disk space before the deploy"
}

Когда у агента есть SSH-хост, у него появляется и ssh_exec. Он принимает те же аргументы и ещё host. Хост вне списка агента вернёт ссылку, по которой вы выдадите доступ.

Тот же хост даёт агенту и свои файлы: _sftp_read и _sftp_write показывают, читают, записывают, переименовывают и удаляют их по SFTP с этим же ключом и ключом сервера. Подробнее на странице Файлы по SFTP.

Прочитайте результат

  • В ответе есть exit_code, stdout и stderr. Вывод не в UTF-8 приходит в полях stdout_base64 или stderr_base64.
  • Длинный вывод обрезается по max_inline_bytes, остальное читает fetch_body. Одна команда может вывести до 512 МиБ.
  • У команды нет терминала и входных данных. Используйте флаги, которые пропускают вопросы, например apt-get -y.
  • Откройте вызов в разделе История вызовов, чтобы увидеть «Результат команды SSH»: цель, «Код завершения», «Отпечаток ключа сервера» и размеры вывода.