// ホストの追加

ホスト画面の + ボタンをタップして新しいサーバーを追加します(iOSでは小さなメニューが開くので、ホストを追加を選びます)。

必須フィールド

  • ホスト名 / IP — サーバーアドレスまたはIPアドレス。IPv4とIPv6の両方をサポート。
  • ポート — デフォルトは22。サーバーが別のポートでSSHを動かしている場合は変更してください。
  • ユーザー名 — ログインするUnixユーザー(例:ubunturootdeploy)。
  • 認証方式 — パスワードまたはSSH鍵(推奨)から選択。

ホスト鍵フィンガープリントの確認

初回接続時にSSHBorgはサーバーのフィンガープリントを表示し、承認を求めます。これはセキュリティチェックです。接続先が正しいサーバーであり、なりすましでないことを確認します。承認前に、サーバー管理者から提供されたか信頼できる手段で確認したフィンガープリントと一致するかを確かめてください。

承認後、フィンガープリントはローカルに保存されます。将来の接続でフィンガープリントが変わった場合、SSHBorgは警告を表示します。これはサーバーの再構築、鍵のローテーション、または中間者攻撃を示している可能性があります。

// ヒント
サーバーのフィンガープリントはいつでも以下のコマンドで確認できます:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

// ホストグループ

サーバーの一覧が増えてきたら、ホストを折りたたみ可能な色分けグループに整理できます。例:本番自宅ラボクライアント

グループの作成

  1. ホストを追加または編集し、グループのドロップダウンを開きます。
  2. 新しいグループ…を選び、名前を入力して、あらかじめ用意された色から 1 つ選びます。
  3. ホストを保存すると、ホスト一覧にそのグループが独立したセクションとして表示されます。

iOSでは、+ ボタン → 新しいグループ から、グループだけを作成することもできます。

グループの操作

  • 折りたたみ / 展開 — グループのヘッダーをタップすると折りたたみ・再展開できます。状態は記憶され、アプリを再起動しても保持されます。
  • — グループの色はヘッダーのドットとして表示され、グループ内のホストアイコンにも同じ色が付きます。
  • 編集 — ヘッダーを長押しして編集を選ぶと、グループ名の変更や色の変更ができます。
  • 削除 — ヘッダーを長押しして削除を選びます。グループ内のホストは削除されず、グループなしに戻るだけです。

色はクイックスウォッチから選ぶことも、Androidではグラデーションのカラーピッカーで自由に作ることもできます(iOSではスウォッチから選びます)。ホストには専用の色も設定でき(ホスト編集画面のグループのすぐ下)、グループの色より優先され、グループのないホストでも使えます。

グループのないホストは一覧の先頭に表示されます。グループを作らなければ、一覧の見た目も動作も従来とまったく同じです。

並び順

設定 → ホスト一覧の並び順で一覧の並べ方を選べます。

  • アルファベット順(既定)— グループは名前順、その中のホストはラベル順。
  • 最近使った順— 最後に接続したホストが先頭に。一度も使っていないホストは末尾に並びます。
  • よく使う順— 接続回数の多いホストから順に並びます。
  • 手動— 自分で決めた順序。

最初の 3 つではグループはアルファベット順のままなので、セクションの見出しは動かず、その中のホストだけが並び替わります。手動ではグループも動かせます。

並べ替えるには手動を選び、ホストまたはグループ見出しのメニュー( ボタン・iOSの ボタン、長押し、Android TVのリモコンならメニューキー)を開いて上へ移動 / 下へ移動を使います。ホストは自分のセクション内でのみ動きます。別のグループに入れるには、ホストの編集画面でグループを変更してください。手動に切り替えたときはその時点で画面に出ていた順序がそのまま保たれるので並びが飛ぶことはなく、あとから追加したホストはセクションの末尾に入ります。

// SFTPファイルマネージャー

SFTPファイルマネージャーを使うと、スマートフォンからサーバー上のファイルを直接参照、アップロード、ダウンロード、リネーム、削除できます。ホスト画面で、ホストのメニューにあるファイルから開きます。

ナビゲーション

フォルダをタップして開きます。戻る矢印またはパスバーの任意のセグメントをタップしてディレクトリツリーを上に移動します。

シンボリックリンクは小さなリンクアイコンバッジで表示されます。シンボリックリンクをタップするとターゲットに移動します。ディレクトリを指す場合は中に入り、ファイルを指す場合は通常のファイルと同様に動作します。

ファイルのアップロード

アップロードボタン(↑)をタップして、スマートフォンのストレージから1つ以上のファイルを選択します。アップロードはすぐに開始され、進行状況が画面上部に表示されます。

ファイルとフォルダのダウンロード

ファイルをタップするとすぐにダウンロードされます。フォルダ全体をダウンロードするには、その横にある ダウンロードアイコンをタップします。SSHBorgはディレクトリツリー全体をダウンロードし、スマートフォンの Downloads フォルダに保存します。

保存先に同名ファイルが既に存在する場合、ダイアログで 上書き、ファイルの スキップ、または転送全体の キャンセル を選択できます。

// シンボリックリンクについて
フォルダのダウンロード中、ディレクトリを指すシンボリックリンクはスキップされます。ダウンロードされるのは通常ファイル(ファイルを指すシンボリックリンクを含む)のみです。これにより意図しない再帰的ダウンロードを防ぎます。

複数選択と一括操作

任意の項目を長押しして選択モードに入り、追加の項目をタップして選択を増やします。ツールバーに現在の選択に対する操作が表示されます:

  • ダウンロード — 選択したすべてのファイルとフォルダを一括ダウンロード。進行ダイアログとキャンセルをサポート。
  • 削除 — 選択したすべての項目を削除。空でないフォルダを削除するとすべての内容が再帰的に削除されます。元に戻す方法はありません。
// iOS
  • アップロード操作メニュー(⋯)を開いてアップロード…を選びます。ファイルはシステムの「ファイル」ブラウザで選択します。
  • ダウンロードの保存先 — SSHBorg専用のフォルダに保存され、「ファイル」アプリのこのiPhone内 → SSHBorg(iPadではこのiPad内)に表示されます。ダウンロードが既存のファイルを上書きすることはありません。同じ名前がある場合、新しいファイルには番号付きの名前が付きます。
  • フォルダ — ファイルやフォルダを長押しするとメニューが開きます:ダウンロード名前変更削除
  • 複数選択 — 操作メニューで項目を選択を選び、項目にチェックを付けます。長押しすると代わりにその項目のメニューが開きます。
  • アップロード時の競合 — ダイアログで上書き両方保持(アップロードしたファイルに新しい名前が付きます)、キャンセルを選べます。

// SSH鍵

鍵ベースの認証はパスワードよりも安全で、設定後は何も覚えたり入力したりする必要がありません。

鍵の生成

ホスト画面上部のアイコンをタップして SSH 鍵 を開き、新しい鍵を生成します。SSHBorgは以下をサポートします:

  • Ed25519 — 推奨。高速、コンパクト、安全。
  • ECDSA(P-256 / P-384) — 古いサーバーとの互換性が良好。
  • RSA(2048 / 4096ビット) — 最大の互換性だが低速。

後で識別しやすいよう、意味のある名前(例:my-vpswork-server)を付けてください。

// セキュリティについて
SSHBorgは意図的に秘密鍵のエクスポートを許可しません。鍵はデバイスから外に出ません。別のデバイスで同じ鍵が必要な場合は、そのデバイスで新しい鍵を生成し、サーバーに別途登録してください。これがより安全なアプローチです。

サーバーへの鍵の登録

鍵を生成したら、タップして 公開鍵 を表示します。コピーして、ログインしたいユーザーのサーバー上の ~/.ssh/authorized_keys ファイルに貼り付けます。

  1. スマートフォンで、SSHBorg → SSH 鍵(ホスト画面の鍵アイコン)→ 鍵をタップ → 公開鍵をコピー。
  2. サーバーにログイン(パスワードまたは既存の鍵で)。
  3. 公開鍵を認証済み鍵ファイルに追記:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "ssh-ed25519 AAAA...コピーした鍵..." >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  4. SSHBorgで接続を試みます。パスワードなしでログインできるはずです。
// サーバー要件
サーバーの /etc/ssh/sshd_configPubkeyAuthentication yes があることを確認してください。ほとんどのディストリビューションではデフォルトで有効ですが、一部のセキュア強化イメージでは無効になっている場合があります。

保存した鍵とパスワードの暗号化

設定 → セキュリティ → 機密データを暗号化 をオンにすると、秘密鍵と保存したホストのパスワードが、端末のセキュアなハードウェアに保管された鍵(AndroidではAndroid Keystore、iOSではキーチェーン)で暗号化されて保存されます。有効にするまではオフのままです。初回起動時のセキュリティのヒントでも案内されます。

暗号化されたデータは端末とこのアプリのインストールに結び付いています。アンインストールすると保存した鍵は復元できず、新しい鍵を生成してサーバーに登録し直す必要があります。機密性の高いサーバー認証情報をスマートフォンに保存する場合は、アプリのロックと併せて強くお勧めします。

パスフレーズで保護された鍵をインポートする場合、パスフレーズで解除するのはインポート時の一度だけです。

// コマンド候補

端末で入力中、SSHBorgはキーボードの上に候補バーを表示します。候補は接続したユーザーのシェル履歴から取得されます。

仕組み

端末セッションが開かれると、SSHBorgはリモートサーバーからシェル履歴ファイルを読み込みます。以下の場所を順に試みます:

  1. ~/.bash_history — Bashシェルのデフォルト
  2. ~/.zsh_history — Zshのデフォルト($HISTFILEが設定されている場合も確認)
  3. ~/.local/share/fish/fish_history — Fishシェルユーザー向け

存在して読み取り可能な最初のファイルが使用されます。入力するとコマンドがリアルタイムでフィルタリングされ、候補バーにチップとして表示されます。チップをタップするとコマンドが挿入されます。

トラブルシューティング

候補が表示されない

  • 履歴ファイルがまだ存在しない可能性があります(初回ログイン、またはシェルが履歴を保存するよう設定されていない)。
  • シェルが履歴を書き込むよう設定されていることを確認してください。Bashの場合、~/.bashrc に追加:
    HISTFILE=~/.bash_history
    HISTSIZE=10000
    HISTFILESIZE=20000
  • Zshの場合、~/.zshrc に追加:
    HISTFILE=~/.zsh_history
    HISTSIZE=10000
    SAVEHIST=10000
    setopt APPEND_HISTORY SHARE_HISTORY

候補が別のユーザーのものになる

// 既知の制限
あるユーザーで接続した後に sudo su - root(または su で別のユーザーに切り替え)を実行した場合、候補バーは root ではなく元のログインユーザーの履歴を表示し続けます。これは、SSHBorgがシェル起動前に接続時の認証情報を使って履歴ファイルを読み込むためです。

rootの履歴候補を取得するには、SSHBorgで直接 root としてログインするよう設定した別のホストエントリーを追加してください(サーバーが許可している場合)。

// 端末ジェスチャー

端末はタイピング以外にも、いくつかのタッチジェスチャーに対応しています:

  • 履歴のスクロール — 上下にスワイプして端末のスクロールバックバッファを参照。
  • ズーム — ピンチ操作でフォントサイズを拡大・縮小。
  • テキストのコピー — 端末の任意の場所を長押しして選択モードに入ります。ハンドルをドラッグして選択範囲を調整し、選択をコピー でハイライトされたテキストのみコピー、または すべてコピー で全出力をコピー。他の場所をタップするとキャンセル。 iOSでは、長押しすると指の下の単語が選択され、コピーペーストすべてを選択のあるシステムメニューが開きます。選択範囲の端をドラッグすると範囲を広げられます。
  • 貼り付け — キーボードが開いているときに表示される追加キーバーの 貼り付け ボタンを使用。

全画面アプリ。 tmux、vim、nano、less のように画面全体を占有するプログラムは独自のスクロールバックを持たないため、実行中は表示が現在の画面に固定され、その下にあるシェルの出力へずれ込むことはありません。

その中でスクロールするには、アプリ側が対応している必要があります。tmux では ~/.tmux.confset -g mouse on を追加すると、スワイプで指の下にあるペインの履歴をたどれます。set mouse=a を設定した vim など、マウス入力を受け付けるプログラムでも同様です。screen の場合は ~/.screenrcaltscreen on があるか確認してください。多くのシステムでは既定で無効になっており、その場合 screen は通常のスクロールバックの上に描画します。

// ターミナル設定

設定 → ターミナルで、ターミナルを好みに合わせて調整できます:

  • ターミナルの配色 — 定番のダーク配色(黒地に白)、日中の明るい場所でも読みやすいライト配色(白地に黒)、またはアプリのテーマと連動して自動で切り替わるアプリのテーマに合わせる。変更は開いているセッションも含めて即座に反映されます。
  • 画面をオンのまま維持 — ターミナルを開いている間、画面が消灯しないようにします。ログの監視や長時間かかるコマンドに便利です。既定ではオフです。
  • 既定のフォントサイズ — 新しいセッション開始時の文字サイズ。各セッションでのピンチズームは引き続き使えます。
  • スクロールバックスクロール方向の反転コマンド候補 — 保持する出力履歴の量、スクロールの向き、前述の候補バーを制御します。
  • ダブルタップの動作 — 任意で、ターミナルのダブルタップに Tab(自動補完)または Tab 2回(候補を一覧表示)を割り当てられます。既定はオフです。 iOSでは、オフの間はダブルタップで単語が選択されます。

// 追加キーバー

ソフトウェアキーボードが開いているとき、その上にショートカットボタンの列が表示されます。バーを横にスクロールすると、すべてのキーにアクセスできます。

修飾キー

CtrlAlt はスティッキートグルです。一方をタップしてから文字キーをタップすることで、組み合わせを送信できます。次のキー入力後に自動的にリセットされます。

  • Ctrl+C — 実行中のプロセスを中断します。
  • Ctrl+D — EOF を送信 / シェルを終了します。
  • Ctrl+Z — プロセスを一時停止します。
  • Ctrl+L — 画面をクリアします。

ワードモード

スペルチェックアイコンで、キーボードをターミナルモードワードモードの間で切り替えられます。ターミナルモード(デフォルト)では自動修正と単語候補が無効になっており、コマンドやファイルパスの入力に最適です。ワードモードでは候補と自動修正が有効になり、通常のテキストフィールドと同様に動作します。SSH越しに自然言語を入力する際(Claude Code や他のインタラクティブツールの使用時など)に便利です。

Androidでは、ワードモードは音声入力にも必要です。キーボードのマイクキーは書き込み先となる実際のテキスト入力欄を必要とするため、ターミナルモードでは音声入力しても何も入力されません。音声入力の前にワードモードに切り替えてください。

ナビゲーションと編集

  • ESC — Escape キー。
  • Tab — シェルの自動補完。
  • ↑ ↓ ← → — カーソル矢印キー。
  • Home / End — 行頭または行末にジャンプ。
  • PgUp / PgDn — ページアップ / ページダウン。
  • Del — 前方削除(カーソルの右側の文字)。
  • 貼り付け — クリップボードの内容をターミナルに貼り付けます。

ファンクションキー

バーを右にスクロールすると、F1 から F12 のファンクションキーにアクセスできます。

レイアウトとカスタムバー

バーには複数のレイアウトがあります。バー上の キーをタップすると切り替えられます。キーの代わりに利用できるバーの一覧が表示されるので、ひとつタップすれば完了です。選択は記憶されます。設定 → ターミナル → 拡張キーバー → カスタマイズからもバーを選択・管理できます。

  • 標準 — 従来のスクロールする 1 段バー。
  • ナチュラル — 使用頻度順に並んだ 1 段。/ - | ~ を含み、矢印はキーボード順(← ↑ ↓ →)。
  • ナチュラル ×2 — 幅いっぱいの 2 段:ESC / - Home ↑ End PgUp の下に Tab Ctrl Alt ← ↓ → PgDn
  • ナチュラル ×3 — 上記に加えてファンクションキーの 3 段目。
  • 最小 — ESC、Tab、Ctrl と矢印だけ。狭い画面向け。

自分のバーを作るには、プリセットを複製する(横の メニュー、iOSでは長押し)か、新しいバーを作成します。エディターにはバーが実際の見た目そのままに表示されます。キーをタップして選択し、下のボタンで左右や別の段へ移動、変更、後ろにキーを追加、削除ができます。各段はスクロール(キーは自然な幅を保つ)か、画面幅いっぱいに広げる(スマートフォンで 1 段あたり約 9 キーまで)かを選べます。最大 3 段、キーの大きさも調整できます。

通常のキーに加えて、カスタムバーにはテキストキーを置けます。任意のテキストをそのまま送信します。単独の |sudo の接頭辞、コマンド全体など。\n は Enter、\t は Tab、\e は Esc を表すので、ls -la\n がワンタップのマクロになります。操作キーがさらに 2 つあります。固定はキーボードを閉じてもバーを表示したままにし、キーボードはキーボードの表示/非表示を切り替えます。

カスタムバーは設定のバックアップに含まれます。Android TV ではすべてリモコンで操作できます。エディターのキーやボタンはすべて D-pad で到達できます。

// エージェント転送

SSHエージェント転送を使うと、SSHBorgに保存された鍵を、リモートサーバー内部から行われるさらなる接続の認証に使用できます。例えば、プライベートリポジトリの git clone や、2台目のサーバーへのホップなどです。

SSHBorgでの転送の有効化

ホストを追加または編集する際に、エージェント転送トグルを有効にします。SSHBorgはそのセッションのSSHエージェントとして機能します。

サーバー側の設定

サーバーはエージェント転送を許可している必要があります。/etc/ssh/sshd_config を確認:

AllowAgentForwarding yes

ほとんどのシステムではデフォルトです。変更後はSSHデーモンを再起動:

sudo systemctl restart sshd

ホストごとのクライアント設定(オプション)

ラップトップやデスクトップからもこのサーバーに接続する場合、ローカルの ~/.ssh/config で永続的に転送を設定できます:

Host myserver
    HostName 203.0.113.42
    User ubuntu
    ForwardAgent yes
// セキュリティについて
エージェント転送はリモートサーバーにSSHエージェントソケットへの一時的なアクセスを与えます。セッションがアクティブな間、そのサーバーのrootユーザー(または侵害されたプロセス)があなたの鍵を使って他の場所に接続できる可能性があります。信頼できるサーバーでのみ転送を有効にしてください。

// レガシー暗号のサポート

一部の旧式サーバー——ネットワーク機器、組み込みデバイス、または古い OpenSSH バージョンを実行するシステム——は、現代の SSH クライアントがデフォルトでは提示しなくなった暗号アルゴリズムのみをサポートしています。

ホスト設定でレガシー暗号を許可トグルを有効にすると、SSHBorg は以下のアルゴリズムをネゴシエーションリストに追加します:

追加されるアルゴリズム

  • 暗号: aes128-cbcaes192-cbcaes256-cbc3des-cbc
  • 鍵交換: diffie-hellman-group14-sha1diffie-hellman-group-exchange-sha1diffie-hellman-group1-sha1
  • ホスト鍵タイプ: ssh-dss(DSA 1024-bit)

サーバーは常に双方がサポートする最強のアルゴリズムをネゴシエートするため、このオプションを有効にしても現代のサーバーへの接続のセキュリティは低下しません。

// iOS
iOSでは ssh-dss ホスト鍵は使えません。アプリが使用しているSSHライブラリにDSAが含まれていないため、DSAのホスト鍵しか持たないサーバーには、このオプションをオンにしてもiPhoneやiPadから接続できません。
// セキュリティ注意
このリストのアルゴリズムは暗号学的に弱いとみなされています。アップグレードできないサーバーにのみこのオプションを有効にしてください。

// 接続が切れる場合とターミナルマルチプレクサー

SSHはスマートフォンとサーバー間のリアルタイムTCP接続です。接続が中断されると、たとえ一瞬でも、セッションとその中で実行されているすべてが失われます。

モバイルで接続が切れる理由

モバイルネットワークは特に接続が切れやすく、理由は以下の通りです:

  • IPアドレスの変更 — 移動中や基地局の切り替え時に、キャリアが新しいパブリックIPを割り当てる場合があります。TCP接続はIPアドレスに紐付いているため、既存のSSHセッションは直ちに無効になります。
  • Wi-Fi ↔ モバイルデータの切り替え — Wi-FiとモバイルデータネットワークのIPが変わり、開いているTCP接続がすべて切断されます。
  • アイドルタイムアウト — キャリアやNATルーターは数分後にアイドル接続を切断することがよくあります。長時間実行されているが無音のセッション(ログ監視、入力待ち)がこれに脆弱です。
  • 電波の喪失 — トンネル、地下駐車場、または単に弱い電波でも一時的にネットワークが切断され、セッションが終了するのに十分です。
  • Android のバックグラウンド制限 — バッテリーを節約するため、Android はアプリがバックグラウンドで動作し続けられる時間を制限します。バックグラウンドで累計約6時間が経過すると、システムは SSHBorg のセッションを停止します。通知が届き、アプリを開き直せば再接続できます。アプリを前面に戻すとこの制限はリセットされます。
  • iOS はバックグラウンドのアプリを一時停止します — SSHBorg が画面から離れて約30秒後、iOS はアプリを一時停止し、接続は切断されます。戻ってくると SSHBorg は自動的に再接続し(パスワードが保存されていない場合のみ入力を求めます)、出力にその位置を示します。これは新しいシェルであり、以前のシェルで実行していたものは失われています。iOS で他のアプリを使っている間も作業を続けさせる唯一の方法は、ターミナルマルチプレクサーです。
// 重要
SSH端末で長時間コマンド(ビルド、バックアップ、データベースマイグレーション)を直接実行中に接続が切れると、コマンドは即座に強制終了されます。部分的な作業が不整合な状態になる可能性があります。

解決策:tmuxまたはscreen

ターミナルマルチプレクサーはサーバー上で永続的なセッションを実行し、SSH接続から完全に独立しています。接続が切れても、セッションとその中で実行されているすべてが継続されます。再接続したとき、セッションに再アタッチすると、すべてがそのままになっています。

これはスマートフォンからサーバーを管理する上で最も有用な習慣です。

tmuxクイックスタート

tmuxはほとんどの最新Linuxディストリビューションで利用可能で、推奨の選択肢です。

# 新しい名前付きセッションを開始
tmux new -s work

# セッションからデタッチ(実行を継続)
Ctrl+B、その後 D

# 実行中のセッションを一覧表示
tmux ls

# セッションに再アタッチ
tmux attach -t work

# 最新のセッションに再アタッチ
tmux attach

screenクイックスタート

screenは古いですが、tmuxがインストールされていない可能性がある最小サーバーイメージを含む、ほぼすべてのUnixシステムで利用できます。

# 新しい名前付きセッションを開始
screen -S work

# セッションからデタッチ
Ctrl+A、その後 D

# 実行中のセッションを一覧表示
screen -ls

# セッションに再アタッチ
screen -r work

モバイルでの推奨ワークフロー

  1. SSHBorgでサーバーに接続。
  2. すぐにtmux/screenセッションを開始または再アタッチ:tmux attach || tmux new -s main
  3. マルチプレクサー内でコマンドを実行。
  4. 接続が切れても、再接続するだけ — セッションはまだそこにあります。
// ヒント
サーバーの ~/.bashrc または ~/.zshrctmux attach || tmux new -s main を追加すると、SSHBorgでログインするたびにマルチプレクサーセッションが自動的に開始されます。

// 踏み台ホスト

踏み台ホスト(踏み台サーバーとも呼ばれます)は、インターネットから直接アクセスできないターゲットサーバーに到達するために経由する中間サーバーです。SSHBorgはシングルおよびマルチホップチェーンをネイティブにサポートしています。

SSHBorgでの踏み台ホストの設定

  1. 踏み台サーバーをSSHBorgに通常のホストとして追加します(例:bastion)。
  2. ターゲットサーバーを別のホストとして追加します。
  3. ターゲットホストの設定で、踏み台ホストを作成した踏み台に設定します。
  4. 踏み台エントリーでエージェント転送を有効にします。これにより鍵が踏み台を通してターゲットサーバーへの認証に転送されます。
// 仕組み
SSHBorgはまず踏み台へのSSH接続を確立し、次にそれを通してターゲットサーバーへの転送TCPチャンネルを開きます。秘密鍵はスマートフォンから外に出ません — 踏み台は暗号化されたストリームをプロキシするだけです。

マルチホップチェーン

複数の中間サーバーを経由する必要がある場合(例:インターネット → 踏み台 → DMZ → ターゲット)、各ホップのエントリーを作成してチェーンします:

  • bastion — 踏み台なし、エージェント転送オン
  • dmz — 踏み台 = bastion、エージェント転送オン
  • target — 踏み台 = dmz
// 重要
エージェント転送は最初のホップだけでなく、すべての中間ホップで有効にする必要があります。これなしでは認証チェーンが壊れ、最終サーバーへの接続が「permission denied」エラーで失敗します。

同等の手動設定(参考)

デスクトップの ~/.ssh/config での同等の設定は次のようになります:

Host bastion
    HostName bastion.example.com
    User admin
    ForwardAgent yes

Host target
    HostName 10.0.1.50
    User ubuntu
    ProxyJump bastion
    ForwardAgent yes

この設定で、ラップトップからの ssh target は透過的に踏み台を経由します。

ファイアウォール要件

  • スマートフォンはSSHポート(通常22)で踏み台に到達できる必要があります。
  • 踏み台はSSHポートでターゲットに到達できる必要があります。
  • ターゲットはスマートフォンから直接到達できる必要はありません

// 複数セッション

SSHBorgでは、異なるサーバーへのものも含め、複数のSSH端末セッションとSFTPファイルマネージャーセッションを同時に開いておくことができます。

  • ホストをタップするとターミナルが開きます。ファイルマネージャーは、ホストのメニューにあるファイルから開きます。そのホストでセッションがすでに開いている場合は、同じメニューから新しいセッションを追加できます。
  • ターミナルの下にあるタブで、開いているセッションを切り替えます。複数のセッションがあるホストでは番号付きの選択肢が開きます。
  • ネットワーク接続が保たれている限り、セッションはバックグラウンドで生き続けます。ただしiOSではごく短時間だけです。接続が切れる場合を参照してください。
  • ホストリストでは、各ホストの隣にアクティブなSSHおよびSFTPセッション数の小さなバッジが表示されるので、一目で開いているものを確認できます。
// ヒント
長時間実行コマンド(ビルド、バックアップ、ログ監視)は別のセッションに切り替えても実行し続けます。SSH接続が切れても継続させたい場合は、サーバー側で tmux または screen を使用してください。

// アプリのセキュリティ

アプリのロック

設定 → セキュリティ → アプリのロック で保護方法を選べます:なし(既定)、生体認証のみ(指紋または顔認証)、デバイスのロック(生体認証に加え、端末のPIN・パターン・パスワード)、またはアプリ内の PIN・パスフレーズ。ロックが有効な場合、SSHBorgはホスト、認証情報、セッションデータを表示する前に認証を要求します。

アプリ内の PIN・パスフレーズ は、生体認証ハードウェアやシステムの画面ロックがなくても、どの端末でも使えます。そのためAndroid TVでは最適な選択です。変更や解除の際は、まず現在のものを尋ねられます。忘れると復元できません。アプリのデータを消去するか再インストールが必要になるため、ホストのバックアップを保管してください。

非アクティブタイムアウトを設定できます。バックグラウンドでその時間が経過すると、アプリは自動的にロックされます。

// iOS
ロックはなし生体認証のみ(Face ID または Touch ID)、デバイスのロック(端末のパスコードまたは生体認証)から選べます。アプリ内のPIN・パスフレーズはありません。

スクリーンショット保護

SSHBorgはデフォルトでスクリーンショットと画面録画をブロックし、機密性の高い端末内容が最近使ったアプリの画面やスクリーンキャプチャツールから漏れないようにします。

スクリーンショットが必要な場合(例:端末出力の共有)は、設定 → セキュリティ → スクリーンショットを許可 で一時的に無効にできます。

// iOS
iOSではアプリがスクリーンショットや画面収録をブロックできないため、この設定はありません。アプリのロックを有効にしていると、SSHBorgは画面から離れた瞬間に内容を覆い隠すので、ホストやターミナルがAppスイッチャーに表示されません。

認証情報の保存

機密データを暗号化 をオンにすると(SSH鍵を参照)、パスワードと秘密鍵は、Android Keystore(Android 10+ではハードウェアで保護)またはiOSの キーチェーン に保管された、この端末に限定された鍵で暗号化して保存されます。認証情報が外部ストレージに書き込まれたり、どこかへ送信されたりすることは一切ありません。

// バックアップについて
暗号化の鍵は端末のセキュアなハードウェアから出ることがないため、鍵をクラウドや端末のバックアップから復元できず、新しいスマートフォンに自動的に転送されません。デバイスを切り替える前に、新しいデバイスで生成した新しい鍵をすべてのサーバーに登録してください。

// 設定のバックアップ

SSHBorgはホストの設定とアプリの設定をJSONファイルとしてエクスポート・インポートできます。これにより、サーバーリストを別のデバイスに移したり、設定のポータブルなバックアップを保管したりできます。

// 重要
バックアップにはホスト設定とアプリ設定(ターミナル、外観、動作)が含まれます。パスワードとSSH鍵はエクスポートされません — 鍵そのものは新しいデバイスで再設定が必要です。ただしバックアップには各ホストが使用する鍵の名前が記録されるため、インポート前に同じ名前の鍵を作成しておくと、そのホストは自動的に再リンクされます。

エクスポート

設定 → バックアップ → バックアップをエクスポート に移動します。システムのファイル選択ツールを使って保存先を選択します。ファイル名はデフォルトで sshborg_backup.json(iOSでは sshborg-backup-日付.json) です。

インポート

設定 → バックアップ → バックアップをインポート に移動します。以前エクスポートした(または手動で作成した).json ファイルを選択します。SSHBorgは既存のホストリストと統合します:

  • 名前が既存のエントリと一致するホストは更新されます。
  • 新しい名前を持つホストは追加されます。
  • ファイルにないホストは変更されません
  • 更新されるホストは保存済みのパスワード・鍵・承認済みホスト鍵を保持します(バックアップには含まれません)。
  • 鍵のないホストは、エクスポートされた keyLabel と名前が一致する鍵があればそれにリンクされます。なければこのフィールドは無視されます。
  • 更新されたホストは、この端末にすでにある使用データ(最終接続・回数・手動の位置)を保持します。ファイルは足りない分だけを補います。

JSON形式

エクスポートファイルは通常のJSONオブジェクトです。手動で作成して、別のソースからサーバーリストを一括インポートすることもできます。

{
  "version": 7,
  "exported_at": "2026-05-14T10:00:00Z",
  "groups": [
    { "name": "本番", "color": -1754827, "position": 0 }
  ],
  "hosts": [
    {
      "label":           "マイVPS",
      "hostname":        "203.0.113.42",
      "port":            22,
      "username":        "ubuntu",
      "agentForwarding": false,
      "jumpMode":        "simple",
      "jumpHosts":       null,
      "jumpHostIdList":  null,
      "portForwardings": null,
      "sftpStartMode":   "last",
      "sftpStartDir":    null,
      "sftpShowHidden":  false,
      "allowLegacyCiphers": false,
      "position":        0,
      "lastConnected":   1757404800000,
      "connectCount":    12,
      "keyLabel":         "私の VPS 鍵",
      "group":           "本番"
    }
  ],
  "settings": {
    "night_mode":            0,
    "scrollback_lines":      2000,
    "terminal_font_size":    13,
    "terminal_color_scheme": 0,
    "double_tap_action":     0
  }
}

任意の settings オブジェクトはアプリの設定を保持し、エクスポート時に自動的に書き込まれます。手動でファイルを作成する場合は省略できます。

フィールドリファレンス

  • label — SSHBorgに表示される名前。インポート時の統合に使われる一意のキー。必須。
  • hostname — サーバーのアドレスまたはIP(IPv4またはIPv6)。必須。
  • port — SSHポート。デフォルト:22
  • username — ログインユーザー名。必須。
  • agentForwardingtrue でSSHエージェント転送を有効化。デフォルト:false
  • jumpMode"simple"jumpHostsのテキストを使用)または "host_list"(SSHBorgの内部ホストIDを使用)。手動作成時は "simple" を使用してください。
  • jumpHosts[ユーザー@]ホスト[:ポート] 形式のカンマ区切りの踏み台ホスト。jumpMode"simple" のときのみ使用。
  • portForwardings — SSH -L 構文による改行区切りのローカルポート転送ルール(例:"8080:localhost:8080")。
  • sftpStartMode — SFTPの開始ディレクトリ:"last"(最後に訪問したディレクトリを記憶)、"fixed"(常に sftpStartDir を使用)、"home"(サーバーのホームディレクトリ)。デフォルト:"last"
  • sftpStartDirsftpStartMode"fixed" のときに使用するパス。
  • sftpShowHiddentrue でこのホストの SFTP ブラウザに隠しファイル(ドットファイル、"." で始まる名前)を表示します。既定は false
  • allowLegacyCipherstrue にすると、前述のレガシー暗号アルゴリズムが有効になります。既定は false です。
  • keyLabel — このホストが使用するSSH鍵の名前。インポート時に同じ名前の鍵があればホストにリンクされ、なければ無視されます。鍵そのものはバックアップに含まれません。
  • group — ホストが属するグループ名。グループはトップレベルの groups 配列に namecolor(符号付き 32 ビット整数の ARGB)で記載します。配列にないグループをホストが参照している場合は既定の色で自動作成されるため、手書きの場合は配列を丸ごと省略してもかまいません。
  • color — ホストごとの任意の色(符号付き 32 ビット整数の ARGB)。グループの色より優先されます。
  • position — 手動の並び順でのホストの位置。所属するセクション(グループなしのブロック、または 1 つのグループ)の中で数えます。省略するとホストは末尾に追加されます。グループも groups 配列内に独自の position を持ちます。
  • lastConnected — 最後に接続した時刻。Unix エポックからのミリ秒です。「最近使った順」に使われます。
  • connectCount — このホストに対して開いたターミナルセッションの数。「よく使う順」に使われます。
// 省略可能なフィールド
labelhostnameusername 以外のフィールドはすべて省略可能です。省略されたフィールドはデフォルト値が使用されます。

// ANDROID TV

SSHBorg は Android TV と Google TV で動作します。リモコンの十字キーで操作できますが、テキスト中心のアプリのため、物理キーボードがあると大きく変わります。

リモコンでの操作

  • 十字キー — 行やコントロール間でフォーカスを移動します。
  • OK(中央) — 主要な操作:ホストへ接続、フォルダを開く、ファイルをダウンロード、グループを展開。
  • 戻る — 一つ上へ、または画面を離れます。

行のメニューを開く

行の名前変更・削除・編集・複製・ダウンロードを行うにはメニューを開きます。フォーカスした行でリモコンの メニュー(オプション)キー を押すか、OK を長押しします。OK 単体では主要な操作が実行され、メニューは開きません。

入力:物理キーボードを使う

物理キーボード(USB または Bluetooth、Android TV は両方に対応)を強くおすすめします。ターミナルには事実上必須です。キーボードがあれば入力欄やシェルは通常どおり動作します。

ない場合でも、画面キーボードで短い入力は可能です。入力欄にフォーカスし、OK で開いて入力し、キーボードの OK / 実行 で確定します——パスワード入力では直接接続します。ただし画面キーボードでシェルコマンドを入力するのは現実的ではありません。

TV でのアプリロック

TV には通常、指紋認証や画面ロックがないため、内蔵の PIN またはパスフレーズ ロックでアプリを保護してください(設定 → セキュリティ)。リモコンやキーボードだけで完結します。アプリのセキュリティ を参照。