Команды 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 закрепляет новый ключ.
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»: цель, «Код завершения», «Отпечаток ключа сервера» и размеры вывода.