# Справочник CLI

`sqctl` — это то, чем вы управляете SecurQbit из терминала. Он общается с фоновой службой через локальный сокет; учётных данных не хранит и собственных прав не требует. Если вы ещё не установили его, начните с [Настройки на компьютере и роутере](/cli-installation).

Каждая команда принимает `--json`: она печатает исходный документ вместо оформленного вывода. Именно к нему стоит писать скрипты — человекочитаемая вёрстка может меняться.

## Кратко

```text
sqctl status                        включён ли VPN и под каким аккаунтом
sqctl login                         вход через подтверждение ссылки в браузере
sqctl logout
sqctl locations                     страны, доступные этому тарифу
sqctl connect [COUNTRY] [--fastest]
sqctl disconnect
sqctl set                           показать настройки
sqctl set country DE|any
sqctl set autoconnect on|off
sqctl set updates on|off
sqctl update [--check] [--yes]      установить последнюю версию
```

## sqctl status

Показывает, защищены ли вы и под каким аккаунтом.

```text
$ sqctl status

  ● Connected      Germany
    Connected for  12m 40s
    Transferred    ↓ 148 MB   ↑ 22 MB

    Account        Alice  alice@example.com
    Plan           Monthly
    Renews         1 September 2026
```

Он намеренно не показывает, как устроен туннель — ни адреса сервера, ни идентификатора сессии. Сделать с этим вам нечего, а адрес сервера тем более не стоит выпускать на скриншот, когда вы просите о помощи.

Если служба не запущена, `sqctl` скажет об этом и напечатает команду, которая запускает её именно на *этой* машине, какая бы система инициализации там ни стояла.

## sqctl login

Выполняет вход для этого компьютера через подтверждение в браузере.

```text
$ sqctl login

Open this link to approve the sign-in:

    https://accounts.securqbit.com/device?code=BCDF-GHJK

Check the page shows this code:

    B C D F - G H J K

Waiting for approval — expires in 10 minutes, Ctrl-C to cancel
```

Откройте ссылку — `sqctl` пытается открыть её за вас, а `--no-browser` это отключает, — войдите в аккаунт, если ещё не вошли, **сверьте код на странице с кодом в терминале** и подтвердите. В терминал ничего вводить обратно не нужно.

Эта сверка и есть вся защита данного механизма.

> **Подтверждайте только тот запрос, который начали сами.** Если кто-то прислал вам такую ссылку и вы её подтвердили, вы завели *его* компьютер в *свой* аккаунт. Код и имя машины, показанные на странице, нужны именно для того, чтобы вы заметили разницу.

Для входа нужен уже существующий аккаунт. Создайте его в [приложении для iOS или Android](/installation) — в том числе [гостевой](/anonymous-accounts), который заходит на accounts.securqbit.com по коду восстановления и подтверждает оттуда, как любой другой.

## sqctl logout

Выключает VPN и выходит из аккаунта на этом компьютере. Туннель опускается первым, и это сделано намеренно: оставить его поднятым на только что отозванных учётных данных значит бросить трафик в сессии, которую сервер вот-вот удалит.

Для [гостевого аккаунта](/anonymous-accounts) сначала запрашивается подтверждение, потому что без кода восстановления войти обратно не получится. `--force` пропускает вопрос.

## sqctl connect

```bash
sqctl connect            # сохранённая настройка
sqctl connect DE         # выглядеть как из Германии
sqctl connect --fastest  # пусть выберет SecurQbit
```

Страна задаётся двухбуквенным кодом — какие доступны вашему тарифу, покажет `sqctl locations`. Подключение занимает несколько секунд; терминал показывает реальное состояние по мере его изменения, а не молчит.

> **На пробном тарифе страну выбрать нельзя.** С пробным тарифом используйте `--fastest`. Указание страны вернёт ошибку о том, что нужен платный тариф, вместо того чтобы тихо подключить вас куда-то ещё. См. [Аккаунт и оплата](/account-billing).

## sqctl disconnect

Опускает туннель и возвращает маршрутизацию и DNS в прежнее состояние.

Отключение — это ещё и указание SecurQbit *остановиться*. Если туннель падает сам, служба продолжает его восстанавливать — именно этого вы хотите от ноутбука, выходящего из сна, или роутера, у которого моргнул канал. Отменяют это намерение только `sqctl disconnect`, выход из аккаунта или остановка службы.

## sqctl locations

Перечисляет по названиям страны, доступные вашему тарифу.

```text
$ sqctl locations

    DE             Germany
    FR             France
    NL             Netherlands
    SG             Singapore
    US             United States
```

## sqctl set

Показывает или меняет настройки. Их три, и это те самые три, которые действительно должны выбирать вы.

```bash
sqctl set                    # показать все три
sqctl set country DE         # по умолчанию Германия
sqctl set country any        # по умолчанию самый быстрый
sqctl set autoconnect on     # подключаться сразу при старте машины
sqctl set updates off        # перестать искать новые версии
```

```text
$ sqctl set

    Location       Germany (DE)
    Auto-connect   on
    Updates        on
```

Всё остальное в туннеле — как он строится, какой у него DNS, как он повторяет попытки — решено за вас и из CLI недоступно. Это не те решения, от вынесения которых VPN становится лучше.

`updates` — именно настройка, а не константа, потому что проверка представляет собой периодическое обращение к CDN SecurQbit, и тот, кто держит VPN, вправе от неё отказаться.

## sqctl update

Ставит последнюю версию.

```bash
sqctl update            # спросить, затем поставить и перезапустить
sqctl update --check    # только сказать, есть ли новая
sqctl update --yes      # без вопросов
```

```text
$ sqctl update

  ! Update available

    Installed      v1.0.0
    Latest         v1.1.0

  SecurQbit restarts to finish, so the VPN disconnects for a moment.

Install it now? [y/N]
```

Загруженное сверяется с опубликованными контрольными суммами до того, как что-либо будет заменено, а затем служба перезапускается уже на новой версии. `sqctl` дожидается её возвращения и считывает версию, так что вам сообщают о том, что действительно работает, а не о том, что записано на диск.

SecurQbit также проверяет раз в сутки сам и лишь сообщает вам — строкой под `sqctl status`:

```text
    Update         v1.1.0 available — run: sqctl update
```

Сам он не ставит никогда. Завершение обновления означает перезапуск, а перезапуск рвёт поднятый туннель; сделать это с человеком без предупреждения хуже, чем оставить его на версию позади.

Если SecurQbit был установлен пакетным менеджером вашего дистрибутива, `sqctl update` откажется ещё до загрузки и предложит обновлять его тем же способом, каким вы его ставили.

## Скрипты

`--json` у любой команды печатает документ протокола:

```bash
$ sqctl status --json | jq '.state, .country'
"connected"
"DE"
```

```bash
# Подключиться и убедиться, что это действительно сработало
sqctl connect --fastest --json > /dev/null
test "$(sqctl status --json | jq -r .state)" = connected
```

Коды возврата: `0` — успех, `1` — команда не выполнена, `2` — служба SecurQbit недоступна.

## Когда что-то не так

`sqctl` переводит сбои в то, с чем можно что-то сделать, и держит внутренности в стороне. Когда эти внутренности всё же нужны — для отчёта об ошибке — есть скрытая диагностическая команда:

```bash
sqctl debug          # версии, где что лежит, какой сокет ответил,
                     # движок туннеля и последняя ошибка в исходном виде
sqctl debug probe DE # проверить сервер целиком, НЕ подключаясь
```

`sqctl debug probe` — самая полезная. Она поднимает прокси к настоящему серверу, отправляет через него один запрос и сообщает адрес, который увидела удалённая сторона, — но не создаёт туннельного устройства и не меняет маршрутов, поэтому говорит вам, работает ли путь, не лишая вас интернета, если он не работает.

Прикладывайте вывод `sqctl debug` к сообщению о проблеме. См. [Устранение неполадок](/troubleshooting).

## Дальше

- [Настройка на компьютере и роутере](/cli-installation) — установка, обновление и удаление.
- [Подключение к серверу](/connecting) — как работает выбор сервера.
- [Обход блокировок и обфускация](/firewall-bypass) — в сети с ограничениями.
