# 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` はその旨を伝え、init システムが何であれ *この* 機器でサービスを起動するコマンドを表示します。

## 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 に選ばせる
```

国は 2 文字のコードです — プランで使えるものは `sqctl locations` で確認できます。接続には数秒かかります。ターミナルは黙り込まず、実際の状態が変わるのに合わせて表示を追随させます。

> **トライアルでは国を選べません。** トライアルプランでは `--fastest` を使ってください。国を指定すると、黙って別の場所につなぐのではなく、有料プランが必要である旨のエラーが返ります。[アカウントと請求](/account-billing)を参照してください。

## sqctl disconnect

トンネルを落とし、ルーティングと DNS を元の状態に戻します。

切断は同時に、SecurQbit に *止まれ* と伝えることでもあります。トンネルが自然に切れた場合、サービスは復旧に向けて動き続けます — スリープから復帰したノート PC や、回線が不安定なルーターでは、それが望ましい挙動です。この意思を取り消すのは `sqctl disconnect`、サインアウト、サービスの停止だけです。

## sqctl locations

プランで使える国を名前で一覧表示します。

```text
$ sqctl locations

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

## sqctl set

設定を表示または変更します。3 つあり、それらは本当にユーザーが決めるべき 3 つです。

```bash
sqctl set                    # 3 つとも表示
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` が固定ではなく設定になっているのは、この確認が SecurQbit の CDN への定期的な通信だからです。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 は 1 日 1 回自分でも確認しますが、するのは知らせることだけです — `sqctl status` の下に 1 行:

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

自分で導入することは決してありません。更新の完了には再起動が必要で、再起動すればその時つながっているトンネルが切れます。それを予告なく行うのは、1 バージョン遅れたままにしておくより悪いことです。

ディストリビューションのパッケージマネージャーで 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` です。実際のサーバーに対してプロキシを起動し、そこへ 1 回リクエストを送り、相手側から見えたアドレスを報告します — ただしトンネルデバイスは作らず、ルーティングも変更しません。つまり、経路が機能しているかを教えてくれる一方で、機能していなくてもインターネット接続を失うことはありません。

問題を報告する際は `sqctl debug` の出力を添えてください。[トラブルシューティング](/troubleshooting)を参照してください。

## 次のステップ

- [デスクトップとルーターの設定](/cli-installation) — 導入・更新・削除。
- [サーバーへの接続](/connecting) — サーバー選択の仕組み。
- [ファイアウォール回避と難読化](/firewall-bypass) — 制限のあるネットワークで。
