// ДОДАВАННЯ ХОСТУ

Натисніть кнопку + на екрані хостів, щоб додати новий сервер.

Обов'язкові поля

  • Hostname / IP — адреса або IP сервера. Підтримуються IPv4 та IPv6.
  • Порт — за замовчуванням 22. Змініть, якщо ваш сервер використовує інший SSH-порт.
  • Ім'я користувача — Unix-користувач, під яким ви хочете увійти (наприклад ubuntu, root, deploy).
  • Автентифікація — оберіть між паролем або SSH ключем (рекомендується).

Перевірка відбитку хосту

При першому підключенні SSHBorg показує відбиток сервера та просить прийняти його. Це перевірка безпеки: вона гарантує, що ви підключаєтесь до правильної машини, а не до зловмисника. Перевірте, що відбиток збігається з наданим адміністратором сервера, перш ніж приймати.

Після прийняття відбиток зберігається локально. Якщо він зміниться при наступному підключенні, SSHBorg попередить вас — це може вказувати на перевстановлення сервера, ротацію ключів або атаку man-in-the-middle.

// ПОРАДА
Ви можете перевірити відбиток сервера в будь-який час за допомогою:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

// SSH КЛЮЧІ

Автентифікація за ключем безпечніша за паролі та після налаштування не вимагає нічого запам'ятовувати чи вводити.

Генерація ключа

Перейдіть до Налаштування → SSH ключі → Згенерувати новий ключ. SSHBorg підтримує:

  • Ed25519 — рекомендовано. Швидкий, компактний та безпечний.
  • ECDSA (P-256 / P-384) — хороша сумісність зі старими серверами.
  • RSA (2048 / 4096 біт) — максимальна сумісність, але повільніший.

Дайте ключу значущу назву (наприклад мій-vps або робочий-сервер), щоб легко його знайти пізніше.

// ПРИМІТКА З БЕЗПЕКИ
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 — він має увійти без запиту пароля.
// ВИМОГА СЕРВЕРА
Переконайтеся, що ваш сервер має PubkeyAuthentication yes у /etc/ssh/sshd_config. Це значення за замовчуванням на більшості дистрибутивів, але деякі захищені образи вимикають його.

Додаткове шифрування ключа

SSHBorg пропонує необов'язкову додаткову парольну фразу для ваших ключів (Налаштування → SSH ключі → натисніть на ключ → Увімкнути шифрування). Коли активовано, ключ шифрується фразою, яку SSHBorg не зберігає — вона запитуватиметься кожного разу при використанні ключа.

Настійно рекомендується, якщо ви зберігаєте конфіденційні облікові дані на телефоні або біометричне блокування вимкнено.

// ПІДКАЗКИ КОМАНД

SSHBorg показує панель підказок над клавіатурою під час введення в терміналі. Підказки беруться з історії оболонки користувача, під яким ви підключились.

Як це працює

При відкритті термінальної сесії SSHBorg читає файл історії оболонки з віддаленого сервера. Перевіряються такі розташування за порядком:

  1. ~/.bash_history — за замовчуванням для Bash
  2. ~/.zsh_history — за замовчуванням для Zsh (також перевіряється як $HISTFILE, якщо встановлено)
  3. ~/.local/share/fish/fish_history — для користувачів Fish shell

Використовується перший існуючий та доступний файл. Під час введення команди фільтруються в реальному часі та відображаються як чіпи на панелі підказок. Натисніть на чіп, щоб вставити команду.

Усунення проблем

Підказки не з'являються

  • Файл історії може ще не існувати (перший вхід або оболонка не налаштована для збереження історії).
  • Переконайтеся, що ваша оболонка налаштована для збереження історії. Для 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 (якщо сервер це дозволяє).

// AGENT FORWARDING

SSH agent forwarding дозволяє використовувати ключі, збережені в SSHBorg, для автентифікації додаткових з'єднань, зроблених зсередини віддаленого сервера — наприклад, для git clone приватного репозиторію або для переходу на другу машину.

Увімкнення forwarding у SSHBorg

При додаванні або редагуванні хосту увімкніть перемикач Agent forwarding. SSHBorg діятиме як SSH агент для цієї сесії.

Налаштування на сервері

Сервер має дозволяти agent forwarding. Перевірте /etc/ssh/sshd_config:

AllowAgentForwarding yes

Це значення за замовчуванням на більшості систем. Після зміни перезапустіть SSH-демон:

sudo systemctl restart sshd

Налаштування клієнта для хосту (необов'язково)

Якщо ви також підключаєтесь до цього сервера з ноутбука або комп'ютера, можна постійно налаштувати forwarding у локальному ~/.ssh/config:

Host myserver
    HostName 203.0.113.42
    User ubuntu
    ForwardAgent yes
// ПРИМІТКА З БЕЗПЕКИ
Agent forwarding надає віддаленому серверу тимчасовий доступ до вашого SSH агент-сокету. Користувач root (або скомпрометований процес) на цьому сервері може використовувати ваші ключі для підключення деінде, поки ваша сесія активна. Вмикайте forwarding лише на серверах, яким довіряєте.

// ОБРИВИ З'ЄДНАННЯ ТА ТЕРМІНАЛЬНІ МУЛЬТИПЛЕКСОРИ

SSH — це активне TCP-з'єднання між вашим телефоном і сервером. Якщо з'єднання перервалося — навіть на секунду — сесія та все, що в ній виконувалося, втрачається.

Чому з'єднання обриваються на мобільному

Мобільні мережі особливо схильні до обривів з'єднання з кількох причин:

  • Зміна IP-адреси — під час подорожі або зміни вежі оператор може призначити вам нову публічну IP. Оскільки TCP-з'єднання прив'язані до IP-адреси, існуюча SSH-сесія стає недійсною негайно.
  • Перехід Wi-Fi ↔ мобільні дані — перемикання між Wi-Fi мережею та мобільними даними (або навпаки) змінює вашу IP і розриває будь-яке відкрите TCP-з'єднання.
  • Таймаути бездіяльності — оператори та NAT-роутери часто закривають неактивні з'єднання через кілька хвилин. Активні але мовчазні сесії (спостереження за логами, очікування введення) вразливі до цього.
  • Втрата сигналу — тунелі, підземні паркінги або просто слабкий сигнал можуть короткочасно перервати мережу, чого достатньо для завершення сесії.
// ВАЖЛИВО
Якщо ви виконуєте довгу команду (збірку, резервне копіювання, міграцію бази даних) безпосередньо в SSH-терміналі та з'єднання обривається, команда завершується негайно. Будь-яка часткова робота може залишитися в непослідовному стані.

Рішення: tmux або screen

Термінальний мультиплексор запускає постійну сесію на сервері, повністю незалежну від вашого SSH-з'єднання. Якщо з'єднання обривається, сесія та все, що в ній виконується, продовжує працювати. Після повторного підключення ви відновлюєте сесію і знаходите все точно так, як залишили.

Це найкорисніша звичка для тих, хто керує серверами з телефону.

Швидкий старт з tmux

tmux доступний на більшості сучасних дистрибутивів Linux і є рекомендованим вибором.

# Запустити нову іменовану сесію
tmux new -s work

# Від'єднатися від сесії (залишити її працювати)
Ctrl+B, потім D

# Переглянути запущені сесії
tmux ls

# Приєднатися до сесії
tmux attach -t work

# Приєднатися до останньої сесії
tmux attach

Швидкий старт з screen

screen старіший, але доступний практично на кожній Unix-системі, включаючи мінімальні серверні образи, де tmux може бути не встановлений.

# Запустити нову іменовану сесію
screen -S work

# Від'єднатися від сесії
Ctrl+A, потім D

# Переглянути запущені сесії
screen -ls

# Приєднатися до сесії
screen -r work

Рекомендований робочий процес на мобільному

  1. Підключіться до сервера через SSHBorg.
  2. Негайно запустіть або відновіть сесію tmux/screen: tmux attach || tmux new -s main
  3. Виконуйте команди всередині мультиплексора.
  4. Якщо з'єднання обірвалося, просто підключіться знову — ваша сесія все ще там.
// ПОРАДА
Ви можете додати tmux attach || tmux new -s main до свого ~/.bashrc або ~/.zshrc на сервері, щоб сесія мультиплексора запускалася автоматично кожного разу при вході через SSHBorg.

// JUMP HOSTS

Jump host (також відомий як bastion host) — це проміжний сервер, через який потрібно пройти, щоб дістатися до цільового сервера, який не доступний безпосередньо з інтернету. SSHBorg нативно підтримує одно- та багаторівневі ланцюги переходів.

Налаштування jump host у SSHBorg

  1. Додайте проміжний сервер як звичайний хост у SSHBorg (наприклад bastion).
  2. Додайте цільовий сервер як інший хост.
  3. У налаштуваннях цільового хосту встановіть Jump host на створений bastion.
  4. Увімкніть Agent forwarding для запису bastion — це дозволяє вашому ключу пересилатися через bastion для автентифікації на цілі.
// ЯК ЦЕ ПРАЦЮЄ
SSHBorg спочатку встановлює SSH-з'єднання до bastion, а потім відкриває перенаправлений TCP-канал через нього до цільового сервера. Приватний ключ ніколи не залишає телефон — bastion лише передає зашифрований потік.

Багаторівневі ланцюги

Якщо потрібно пройти через кілька проміжних серверів (наприклад інтернет → bastion → dmz → target), створіть запис для кожного переходу та з'єднайте їх ланцюгом:

  • bastion — без jump host, agent forwarding увімкнено
  • dmz — jump host = bastion, agent forwarding увімкнено
  • target — jump host = dmz
// ВАЖЛИВО
Agent forwarding має бути увімкнено на кожному проміжному вузлі, а не лише на першому. Без цього ланцюг автентифікації розривається і з'єднання з кінцевим сервером не вдасться з помилкою "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 на ноутбуці прозоро переходить через bastion.

Вимоги до брандмауера

  • Телефон має мати доступ до bastion по його SSH-порту (зазвичай 22).
  • Bastion має мати доступ до target по його SSH-порту.
  • Target не повинен бути доступний безпосередньо з вашого телефону.

// КІЛЬКА СЕСІЙ

SSHBorg дозволяє одночасно тримати відкритими кілька SSH-термінальних сесій та сесій файлового менеджера SFTP, навіть до різних серверів.

  • Відкрийте сесію з екрану хостів, натиснувши Термінал або SFTP.
  • Перемикайтеся між відкритими сесіями за допомогою селектора сесій у верхній частині екрану.
  • Сесії залишаються активними у фоновому режимі, поки мережеве з'єднання триває.
  • Список хостів показує маленький значок біля кожного хосту з кількістю активних SSH та SFTP сесій, щоб одразу бачити, що відкрито.
// ПОРАДА
Команди з тривалим виконанням (збірки, резервне копіювання, стеження за логами) продовжують працювати навіть коли ви перемикаєтеся на іншу сесію. Використовуйте термінальний мультиплексор на зразок tmux або screen на стороні сервера, якщо хочете, щоб вони пережили навіть обрив SSH-з'єднання.

// БЕЗПЕКА ЗАСТОСУНКУ

Біометричне блокування

Увімкніть біометричне блокування в Налаштування → Безпека → Біометричне блокування. Коли активовано, SSHBorg вимагає відбиток пальця або розпізнавання обличчя перед показом будь-яких хостів, облікових даних або даних сесії.

Ви можете встановити таймаут бездіяльності — після цієї кількості хвилин у фоновому режимі застосунок автоматично заблокується.

Захист знімків екрана

За замовчуванням SSHBorg блокує знімки екрана та запис екрана, щоб конфіденційний вміст терміналу не потрапив через екран останніх застосунків або інструменти захоплення екрана.

Якщо потрібно зробити знімок (наприклад, щоб поділитися виведенням терміналу), можна тимчасово вимкнути захист у Налаштування → Безпека → Дозволити знімки.

Зберігання облікових даних

Всі облікові дані (паролі, приватні ключі, парольні фрази) зберігаються в зашифрованому вигляді за допомогою Android Keystore — апаратно захищеного сховища, доступного на Android 10+. Вони ніколи не записуються на зовнішнє сховище і не передаються нікуди.

// ПРИМІТКА ПРО РЕЗЕРВНЕ КОПІЮВАННЯ
Оскільки ключі зберігаються в Android Keystore, вони не можуть бути включені до резервної копії хмари Android та не переносяться автоматично на новий телефон. Перед зміною пристрою обов'язково авторизуйте новий ключ, згенерований на новому пристрої, на всіх своїх серверах.