⚙⚙⚙

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

Натисніть кнопку + на екрані хостів, щоб додати новий сервер (на iOS вона відкриває коротке меню: виберіть Додати хост).

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

  • 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

// ГРУПИ ХОСТІВ

Коли список серверів росте, хости можна впорядкувати в згортувані групи з кольоровим позначенням — наприклад Продакшн, Домашня лабораторія, Клієнти.

Створення групи

  1. Додайте або відредагуйте хост і відкрийте випадний список Група.
  2. Виберіть Нова група…, введіть назву й виберіть один із передвизначених кольорів.
  3. Збережіть хост — у списку хостів група з'явиться як окремий розділ.

На iOS групу можна створити й окремо — кнопкою + → Нова група.

Робота з групами

  • Згорнути / розгорнути — торкніться заголовка групи, щоб згорнути її або знову відкрити. Стан запам'ятовується навіть після перезапуску застосунку.
  • Колір — колір групи показано крапкою в заголовку та відтінком піктограм хостів у групі.
  • Редагувати — утримуйте заголовок і виберіть Редагувати, щоб перейменувати групу або змінити її колір.
  • Видалити — утримуйте заголовок і виберіть Видалити. Хости групи не видаляються — вони просто залишаються без групи.

Кольори можна вибрати зі швидких зразків або, на Android, довільно за допомогою градієнтного вибору кольору — на iOS вибір робиться зі зразків. Хост також може мати власний колір — він задається в редакторі хоста, одразу під групою, — який має пріоритет над кольором групи і працює й для хостів без групи.

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

Порядок списку

Оберіть, як упорядкувати список, у Налаштування → Порядок списку хостів:

  • За абеткою (типово) — групи за назвою, хости за міткою всередині кожної.
  • Нещодавні — угорі хост, до якого ви підключалися востаннє; ніколи не використані лишаються внизу.
  • Найчастіші — спершу хости з найбільшою кількістю підключень.
  • Вручну — порядок, який задаєте ви.

У перших трьох режимах групи лишаються за абеткою, тож заголовки розділів ніколи не рухаються і змінюється лише розташування хостів усередині них. У ручному порядку групи теж можна переставляти.

Щоб переставити, оберіть Вручну, потім відкрийте меню хоста або заголовка групи — кнопка ⋮ (… на iOS), довге натискання чи клавіша Menu на пульті Android TV — і скористайтеся пунктами Перемістити вгору / Перемістити вниз. Хост рухається лише в межах власного розділу: щоб перенести його в іншу групу, змініть групу в редакторі хоста. Перехід у ручний режим зберігає саме той порядок, який був на екрані, тож ніщо не стрибає, а додані згодом хости потрапляють у кінець свого розділу.

// ФАЙЛОВИЙ МЕНЕДЖЕР SFTP

Файловий менеджер SFTP дозволяє переглядати, завантажувати, скачувати, перейменовувати та видаляти файли на сервері безпосередньо з телефону. Відкрийте його з екрана хостів пунктом Файли в меню хоста.

Навігація

Торкніться папки, щоб відкрити її. Використовуйте стрілку назад або торкніться будь-якого сегмента рядка шляху, щоб піднятися вгору по дереву каталогів. Дотик до файлу відкриває те, що з ним можна зробити: скачати, відкрити в редакторі, перейменувати, видалити.

Символічні посилання відображаються з маленьким значком ланцюжка. Торкання символічного посилання переходить до його цілі: якщо воно вказує на каталог — ви входите до нього; якщо на файл — поводиться як звичайний файл.

Завантаження файлів на сервер

Торкніться кнопки завантаження (↑) щоб вибрати один або кілька файлів зі сховища телефону. Завантаження починається негайно, прогрес відображається у верхній частині екрана.

Скачування файлів і папок

Торкніться значка скачування праворуч у рядку файлу, щоб одразу його скачати. Щоб скачати цілу папку, торкніться значка скачування поруч з нею — SSHBorg скачає все дерево каталогів і збереже його в папці Завантаження на телефоні.

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

// ПРИМІТКА ПРО СИМВОЛІЧНІ ПОСИЛАННЯ
Під час скачування папки символічні посилання, що вказують на каталоги, пропускаються — скачуються лише звичайні файли (включно з посиланнями на файли). Це запобігає ненавмисному рекурсивному скачуванню.

Множинний вибір та пакетні операції

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

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

Переміщення файлів на сервері

Виберіть Вирізати в меню файлу або папки — чи кілька одразу через Вибрати елементи — тоді відкрийте папку призначення й торкніться Вставити у смужці, що з'явилася над списком. Переміщення виконує сам сервер: нічого не скачується й не завантажується, тож файл будь-якого розміру переміщується миттєво.

Якщо в призначенні така назва вже зайнята, SSHBorg запитає, перш ніж щось зачіпати. Файл можна замінити або залишити поруч із наявним; дві папки з однаковою назвою можуть лише стояти поряд, бо жоден SFTP-сервер не вміє об'єднувати папки — mv теж відмовляється. Переміщення між двома різними дисками сервера також неможливе: переміщення — це перейменування, а перейменування не перетинає файлових систем. Для цього потрібна копія, якої SSHBorg поки не робить.

Редагування файлів

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

Файл повертається таким, яким прийшов. Кодування розпізнається і використовується знову під час збереження, кінці рядків LF або CRLF зберігаються, файл без переходу рядка в кінці таким і лишається, права не змінюються. Якщо кодування прочитано неправильно, торкніться його в смужці внизу редактора й виберіть інше — у списку лише ті кодування, що здатні точно відтворити байти цього файлу, тож хибний вибір може виглядати неправильно, але зіпсувати файл не може.

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

Файли відкриваються до 4 МБ, хоч якої вони довжини: малюються лише рядки на екрані, тож файл на мегабайти гортається як короткий. Усе, що більше, — це термінал із nano чи vi, у якого обмежень немає взагалі.

Файли налаштувань підсвічуються — коментарі, рядки, числа, ключі, заголовки розділів, змінні shell і теги XML — за назвою файлу або, якщо назва нічого не каже, за формою вмісту: сценарії shell, директиви у стилі nginx і sshd, INI, YAML, JSON та XML. Звичайний текст, нотатки й журнали навмисно лишаються без кольору, де він був би лише шумом. Підсвічування — це лише вигляд, воно не змінює жодного байта.

Шістнадцятковий редактор

Нетекстовий файл відкривається в шістнадцятковому редакторі: зміщення ліворуч, байти посередині, друковані символи праворуч і клавіатура для шістнадцяткових цифр. Торкніться байта й наберіть дві цифри, щоб замінити його. Значення змінюються, довжина — ніколи, тож кожне зміщення у файлі лишається на місці. Відкрити в HEX у меню файлу так відкриває будь-який файл, а текстовий файл, прийнятий за двійковий — скажімо, з випадковим байтом NUL, — усе одно можна відкрити як текст із того самого вікна.

// iOS
  • Вивантаження — відкрийте меню Дії (⋯) і виберіть Завантажити…; файли вибираються в системному переглядачі «Файли».
  • Куди потрапляють завантаження — у власну папку SSHBorg, яку застосунок «Файли» показує в На iPhone → SSHBorg (На iPad на iPad). Завантаження ніколи нічого не перезаписує: якщо назва зайнята, новий файл отримує пронумеровану назву.
  • Папки — утримуйте файл або папку, щоб відкрити меню: Завантажити, Перейменувати, Видалити.
  • Множинний вибір — виберіть Вибрати елементи в меню «Дії», потім позначте елементи. Довге натискання натомість відкриває меню елемента.
  • Конфлікти під час вивантаження — діалог пропонує Перезаписати, Зберегти обидва (вивантажений файл отримує нову назву) або Скасувати.
  • Редагування — редактор і шістнадцятковий редактор є й тут: меню файлу (довге натискання) пропонує Відкрити в редакторі та Відкрити в HEX. Під час завантаження файл проходить через тимчасову теку застосунку й видаляється щойно його прочитано.
  • Збереження — файл записується просто поверх оригіналу, а не в тимчасовий файл поруч, який потім перейменовують на його місце, тож з'єднання, втрачене посеред збереження, може залишити його записаним наполовину.

// 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. Це значення за замовчуванням на більшості дистрибутивів, але деякі захищені образи вимикають його.

Шифрування збережених ключів і паролів

Увімкніть Налаштування → Безпека → Шифрувати конфіденційні дані, щоб зберігати приватні ключі та паролі хостів зашифрованими ключем, що зберігається в захищеному обладнанні пристрою — в Android Keystore або, на iOS, у Зв'язці ключів. Опція вимкнена, доки ви її не ввімкнете; порада з безпеки під час першого запуску вказує на неї.

Зашифровані дані прив'язані до пристрою та до цієї інсталяції застосунку: після видалення збережені ключі неможливо відновити, і доведеться згенерувати нові та знову авторизувати їх на серверах. Разом із блокуванням застосунку це настійно рекомендується, якщо ви зберігаєте на телефоні конфіденційні облікові дані.

Ключ, захищений парольною фразою, запитує її один раз — під час імпорту, а далі зберігається вже відкритим: сама фраза на пристрій не записується. Парольну фразу зазвичай використовують і десь інде, тоді як приватний ключ вартий лише себе — а ключ, що лежить поряд із власною фразою, нею все одно не захищений. Тут його захищають приватне сховище застосунку, Шифрувати конфіденційні дані та блокування застосунку. Ключ, імпортований попередньою версією, лишився зашифрованим і не може пройти автентифікацію: у списку такі позначено, їх потрібно імпортувати знову.

Два зашифровані формати, які застосунок не відкриває: контейнер OpenSSL (BEGIN ENCRYPTED PRIVATE KEY) і .ppk від PuTTY. Імпорт про це повідомляє, а не бере ключ наполовину. Розшифруйте його засобом, яким він створений, і імпортуйте знову — на копії, а не на єдиному вашому файлі:

ssh-keygen -p -N "" -f id_ed25519_copy
openssl pkcs8 -in key.pem -out key_plain.pem

PuTTYgen перетворює .ppk через Conversions → Export OpenSSH key.

// iOS
На iOS усе так само: парольну фразу запитують один раз, під час імпорту, ключ зберігається відкритим, а фраза не записується ніде. Один формат iOS відхиляє додатково: окрім контейнера OpenSSL і .ppk від PuTTY, ще й старе шифрування PEM (Proc-Type: 4,ENCRYPTED), яке пише ssh-keygen -m PEM з парольною фразою. Розшифруйте такий ключ і імпортуйте знову.

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

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 (якщо сервер це дозволяє).

// ЖЕСТИ ТЕРМІНАЛУ

Термінал реагує на кілька жестів дотику крім введення тексту:

  • Прокрутка історії — проведіть вгору або вниз для перегляду буфера прокрутки терміналу.
  • Масштабування — зведіть пальці для збільшення або зменшення розміру тексту.
  • Копіювання тексту — утримуйте в будь-якому місці терміналу для входу в режим виділення. Перетягніть маркери для налаштування виділеної області, потім натисніть Копіювати вибране для виділеного тексту, або Копіювати все для всього виводу. Торкніться за межами для скасування. На iOS довге натискання виділяє слово під пальцем і відкриває системне меню з пунктами Скопіювати, Вставити та Вибрати все; перетягніть край виділення, щоб розширити його.
  • Вставка — використовуйте кнопку Вставити на панелі додаткових клавіш (видима, коли клавіатура відкрита).

Повноекранні програми. Програми, що займають увесь екран — tmux, vim, nano, less — не мають власної історії, тому поки вони працюють, вигляд лишається на активному екрані й не сповзає у виведення оболонки під ним.

Прокручування всередині них має забезпечити сама програма. У tmux додайте set -g mouse on до ~/.tmux.conf: тоді свайп гортає історію панелі під вашим пальцем. Те саме стосується будь-якої програми, що приймає введення мишею, наприклад vim із set mouse=a. Для screen перевірте, чи є altscreen on у ~/.screenrc — на багатьох системах його типово вимкнено, і screen тоді малює поверх звичайної історії.

// НАЛАШТУВАННЯ ТЕРМІНАЛА

У розділі Налаштування → Термінал можна підлаштувати термінал під себе:

  • Кольори термінала — класична темна схема (біле на чорному), світла схема (чорне на білому), яку легше читати при яскравому світлі, або відповідно до теми застосунку — вона перемикається автоматично разом із темою. Зміна застосовується одразу, зокрема й до вже відкритих сеансів.
  • Не вимикати екран — запобігає вимкненню екрана, поки відкрито термінал. Зручно під час перегляду логів чи тривалих команд. Типово вимкнено.
  • Типовий розмір шрифту — розмір тексту, з яким починаються нові сеанси; масштабування жестом у кожному сеансі працює як і раніше.
  • Буфер прокручування, інвертоване прокручування та підказки команд — визначають, скільки історії виводу зберігається, напрям прокручування та панель підказок, описану вище.
  • Дія подвійного дотику — за бажанням подвійний дотик до термінала надсилає Tab (автодоповнення) або Tab двічі (перелічує всі варіанти). Типово вимкнено. На iOS, поки опцію вимкнено, подвійний дотик виділяє слово.

// ПАНЕЛЬ ДОДАТКОВИХ КЛАВІШ

Коли екранна клавіатура відкрита, над нею з'являється ряд кнопок швидкого доступу. Прокрутіть панель горизонтально, щоб побачити всі клавіші.

Клавіші-модифікатори

Ctrl та Alt — це перемикачі з фіксацією: натисніть один, потім натисніть буквену клавішу для надсилання комбінації. Вони автоматично скидаються після наступного натискання клавіші.

  • Ctrl+C — перериває процес, що виконується.
  • Ctrl+D — надсилає EOF / закриває shell.
  • Ctrl+Z — призупиняє процес.
  • Ctrl+L — очищає екран.

Режим слів

Іконка перевірки орфографії перемикає клавіатуру між режимом термінала і режимом слів. У режимі термінала (за замовчуванням) автокорекція і підказки слів вимкнені — ідеально для команд і шляхів до файлів. У режимі слів клавіатура поводиться як звичайне текстове поле з увімкненими підказками і автокорекцією. Корисно при введенні природної мови через SSH, наприклад з Claude Code або іншими інтерактивними інструментами.

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

Навігація та редагування

  • ESC — клавіша Escape.
  • Tab — автодоповнення shell.
  • ↑ ↓ ← → — клавіші зі стрілками.
  • Home / End — перейти на початок або кінець рядка.
  • PgUp / PgDn — сторінка вгору / сторінка вниз.
  • Del — видалення вперед (символ праворуч від курсора).
  • Вставити — вставити вміст буфера обміну в термінал.

Функціональні клавіші

Прокрутіть панель праворуч, щоб дістатися клавіш від F1 до F12.

Розкладки та власні панелі

Панель має кілька розкладок. Торкніться клавіші ⇄ на панелі, щоб перемкнути: клавіші поступаються місцем списку доступних панелей, торкніться однієї — і готово, вибір запам'ятовується. Панелі також можна вибирати й керувати ними в Налаштування → Термінал → Панель додаткових клавіш → Налаштувати.

  • Стандартна — класичний один ряд із прокруткою.
  • Природна — один ряд, упорядкований за частотою використання, з / - | ~ і стрілками в порядку клавіатури (← ↑ ↓ →).
  • Природна ×2 — два ряди на всю ширину: ESC / - Home ↑ End PgUp над Tab Ctrl Alt ← ↓ → PgDn.
  • Природна ×3 — те саме плюс третій ряд із функціональними клавішами.
  • Мінімальна — лише ESC, Tab, Ctrl і стрілки, для вузьких екранів.

Щоб створити власну, продублюйте шаблон (меню ⋮ поруч або довге натискання на iOS) або створіть нову панель. Редактор показує панель саме такою, якою вона буде: торкніться клавіші, щоб вибрати її, а потім кнопками нижче перемістіть її ліворуч або праворуч, в інший ряд, змініть, додайте клавішу після неї або видаліть. Кожен ряд може прокручуватися (клавіші зберігають природну ширину) або заповнювати ширину екрана (до приблизно дев'яти клавіш у ряду на телефоні). До трьох рядів; розмір клавіш регулюється.

Окрім звичайних клавіш, власна панель може містити текстові клавіші: будь-який текст, що надсилається як є — окремий |, префікс sudo або ціла команда. Використовуйте \n для Enter, \t для Tab і \e для Escape, тож ls -la\n стає макросом на один дотик. Є ще дві клавіші дій: закріпити тримає панель видимою при закритій клавіатурі, клавіатура показує або ховає клавіатуру.

Власні панелі входять до резервної копії налаштувань. На Android TV усе працює з пульта: клавіші та кнопки редактора доступні через D-pad.

// 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 лише на серверах, яким довіряєте.

// ЗАСТАРІЛІ ШИФРИ

Деякі старіші сервери — мережеве обладнання, вбудовані пристрої або системи з застарілими версіями OpenSSH — підтримують лише алгоритми шифрування, які сучасні SSH-клієнти більше не оголошують за замовчуванням.

При активації перемикача Дозволити застарілі шифри в налаштуваннях хоста SSHBorg додає такі алгоритми до списку переговорів:

Додані алгоритми

  • Шифри: aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc
  • Обмін ключами: diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1, diffie-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 у фоні — поки сеанс відкритий, SSHBorg тримає службу переднього плану з власним сповіщенням, тож Android більше не зупиняє сеанси через певний час: залишений відкритим сеанс продовжує працювати, поки ви користуєтеся іншими застосунками. Завершити його все ще можуть телефон, коли йому потрібна пам'ять, або енергозбереження, яке деякі виробники застосовують до фонових застосунків — якщо сеанси зупиняються самі, першим варто вилучити SSHBorg з оптимізації батареї. Знову відкривши застосунок, ви можете перепідключитися.
  • iOS призупиняє застосунки у фоні — приблизно через тридцять секунд після того, як SSHBorg зникає з екрана, 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 старіший, але доступний практично на кожній 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, навіть до різних серверів.

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

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

Блокування застосунку

Виберіть спосіб захисту в Налаштування → Безпека → Блокування застосунку: Немає (за замовчуванням), Лише біометрія (відбиток пальця або розпізнавання обличчя), Блокування пристрою (PIN, графічний ключ чи пароль пристрою на додачу до біометрії) або вбудований PIN чи парольна фраза. Коли блокування активне, SSHBorg вимагає автентифікацію перед показом будь-яких хостів, облікових даних або даних сесії. Якщо автентифікацію відхилено або ви її скасували, застосунок залишається на власному екрані блокування з кнопкою для повторної спроби — він не закривається, тож відкриті сесії будуть на місці після розблокування.

Вбудований PIN чи парольна фраза працює на будь-якому пристрої, навіть без біометричного обладнання чи системного блокування екрана — тому це правильний вибір на Android TV. Щоб змінити або прибрати його, спершу запитується поточний. Його неможливо відновити, якщо забудете: доведеться очистити дані застосунку або перевстановити його, тож тримайте резервну копію своїх хостів.

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

// iOS
Блокування пропонує Немає, Лише біометрія (Face ID або Touch ID) та Блокування пристрою (код пристрою або біометрія). Вбудованого PIN чи парольної фрази немає.

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

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

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

// iOS
iOS не дозволяє застосунку блокувати знімки чи запис екрана, тому такого налаштування немає. Коли блокування застосунку ввімкнене, SSHBorg приховує свій вміст, щойно зникає з екрана, тож хости й термінали не видно в перемикачі програм.

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

Коли ввімкнено Шифрувати конфіденційні дані (див. SSH ключі), паролі та приватні ключі зберігаються зашифрованими ключем з Android Keystore — апаратно захищеного на Android 10+ — або, на iOS, зі Зв'язки ключів, обмеженим цим пристроєм. Облікові дані ніколи не записуються на зовнішнє сховище і нікуди не передаються.

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

Найнадійніше налаштування

Кожна частина вище корисна сама собою. Разом це найбезпечніше, що може дати застосунок, і це дві хвилини роботи:

  1. Увімкніть Налаштування → Безпека → Шифрувати конфіденційні дані.
  2. Поставте блокування застосунку на Лише біометрія — або на PIN чи парольна фраза, якщо не хочете залежати від біометрії телефона.
  3. Поставте час блокування на Негайно або щонайбільше 30 секунд.
  4. Створіть у застосунку новий ключ із назвою, яка вказує на пристрій.
  5. Додайте цей ключ на свої сервери й користуйтеся ним замість пароля.

Ключ, створений на телефоні, ніколи не існував більше ніде: немає старішої копії, яка могла вже втекти, і немає чого прибирати на іншій машині. Один ключ на пристрій означає також, що втрачений телефон коштує одного рядка в authorized_keys — прибираєте його, і решта пристроїв працює далі. Саме тому назву варто вибрати добре.

Чого все це не може: якщо скомпрометовано сам телефон, разом із ним скомпрометовано й той ключ, чим би він не був захищений на диску. Парольна фраза його теж не врятує — хто може прочитати сховище застосунку, прочитає й те, що ви набираєте. Саме тому SSHBorg запитує парольну фразу ключа один раз, під час імпорту, і зберігає ключ відкритим, а не фразу (див. Ключі SSH).

// РЕЗЕРВНЕ КОПІЮВАННЯ КОНФІГУРАЦІЇ

SSHBorg може експортувати та імпортувати конфігурації хостів і налаштування застосунку у форматі JSON. Це дозволяє перенести список серверів на інший пристрій або зберегти портативну резервну копію налаштувань.

// ВАЖЛИВО
Резервна копія включає конфігурації хостів і налаштування застосунку (термінал, вигляд, поведінка). Паролі та SSH-ключі ніколи не експортуються — матеріал ключа доведеться налаштувати заново на новому пристрої. Проте резервна копія зберігає назву ключа, який використовує кожен хост: якщо перед імпортом ви створите ключ із такою ж назвою, його хости буде автоматично прив'язано знову.

Експорт

Перейдіть до Налаштування → Резервна копія → Експортувати резервну копію. Виберіть місце збереження файлу за допомогою системного вибору файлів. За замовчуванням файл називається sshborg_backup.json (sshborg-backup-дата.json на iOS).

Імпорт

Перейдіть до Налаштування → Резервна копія → Імпортувати резервну копію. Виберіть файл .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 — ім'я користувача для входу. Обов'язкове.
  • agentForwarding — true для увімкнення пересилання SSH-агента. За замовчуванням: false.
  • jumpMode — "simple" (використовує текст jumpHosts) або "host_list" (використовує внутрішні ID SSHBorg). Використовуйте "simple" під час ручного створення файлу.
  • jumpHosts — список jump-хостів через кому у форматі [користувач@]хост[:порт]. Використовується лише коли jumpMode — "simple".
  • portForwardings — правила локального переспрямування портів через новий рядок у синтаксисі SSH -L, напр. "8080:localhost:8080".
  • sftpStartMode — початкова директорія SFTP: "last" (запам'ятати останню відвідану), "fixed" (завжди використовувати sftpStartDir), "home" (домашня директорія сервера). За замовчуванням: "last".
  • sftpStartDir — шлях для використання, коли sftpStartMode — "fixed".
  • sftpShowHidden — true, щоб показувати приховані файли (dotfiles, імена, що починаються з ".") у браузері SFTP цього хоста. Типово false.
  • allowLegacyCiphers — true, щоб увімкнути застарілі алгоритми, описані вище. Типово false.
  • keyLabel — назва SSH-ключа, який використовує цей хост. Під час імпорту, якщо ключ із такою назвою існує, його прив'язують до хоста; інакше поле ігнорується. Сам ключ ніколи не входить до резервної копії.
  • group — назва групи, до якої належить хост. Групи перелічені в масиві groups верхнього рівня з полями name і color (ARGB як 32-бітне ціле зі знаком). Якщо хост посилається на групу, якої немає в масиві, її буде створено автоматично з типовим кольором — тож, пишучи файл вручну, масив можна пропустити.
  • color — необов'язковий колір окремого хоста (ARGB як 32-бітне ціле зі знаком). Має пріоритет над кольором групи.
  • position — місце хоста в ручному порядку, рахуючи в межах його розділу (блок без групи або одна група). Якщо пропустити, хост додається в кінець. Групи мають власну position у масиві groups.
  • lastConnected — час останнього підключення, у мілісекундах від епохи Unix. Живить порядок «нещодавні».
  • connectCount — скільки термінальних сеансів було відкрито до цього хоста. Живить порядок «найчастіші».
// НЕОБОВ'ЯЗКОВІ ПОЛЯ
Всі поля, крім label, hostname та username, є необов'язковими. Відсутні поля повертаються до значень за замовчуванням.

// ANDROID TV

SSHBorg працює на Android TV та Google TV. Керується з пульта (D-pad), але оскільки це застосунок із великою кількістю тексту, фізична клавіатура дуже допомагає.

Навігація з пульта

  • Стрілки D-pad — переміщують фокус між рядками та елементами.
  • OK (центр) — основна дія: підключитися до хоста, відкрити теку, завантажити файл, розгорнути групу.
  • Назад — на рівень вище або вихід з екрана.

Відкриття меню рядка

Щоб перейменувати, видалити, редагувати, дублювати чи завантажити з рядка, відкрийте його меню: натисніть клавішу Меню (опції) на пульті на виділеному рядку або утримуйте OK (довге натискання). OK саме по собі виконує основну дію, а не меню.

Введення тексту: використовуйте фізичну клавіатуру

Фізична клавіатура — USB або Bluetooth (Android TV підтримує обидві) наполегливо рекомендується і фактично необхідна для термінала. З нею текстові поля та оболонка працюють як звичайно.

Без неї екранна клавіатура все ж підходить для коротких введень: виділіть поле, натисніть OK, щоб відкрити його, введіть текст і натисніть OK / Go на клавіатурі для підтвердження — у запиті пароля це підключає напряму. Проте вводити команди оболонки екранною клавіатурою незручно.

Блокування застосунку на TV

TV зазвичай не має сканера відбитків чи блокування екрана, тож захистіть застосунок вбудованим блокуванням PIN або парольною фразою (Налаштування → Безпека) — воно повністю працює з пульта або клавіатури. Див. Безпека застосунку.

// ЛІЦЕНЗІЇ ВІДКРИТОГО КОДУ

SSHBorg — вільне програмне забезпечення під GNU General Public License v3. Вихідний код на GitHub, і для Android, і для iOS. Використано такі бібліотеки, кожну під власною ліцензією:

  • mwiede/JSch — протокол SSH в Android — ліцензія у стилі BSD
  • Bouncy Castle — криптографія в Android — ліцензія у стилі MIT
  • sora-editor — компонент редагування тексту для зміни файлів на сервері, в Android — GNU LGPL v2.1
  • libssh2 — протокол SSH в iOS — ліцензія BSD

Жодна з них не з'єднується ні з чим самостійно: SSHBorg звертається лише до серверів, які ви вказали, і до sshborg.com, коли ви торкаєтеся посилання. Жодних бібліотек аналітики, реклами чи трекерів.

⚙⚙⚙