Руководство пользователя Berth

SFTP · терминал · последовательная консоль в одном окне — от добавления сервера до горячих клавиш

🚀Начало работы

Устройство экрана

В одном окне — четыре области.

Добавление первого сервера

  1. Щёлкните правой кнопкой по пустому месту боковой панели или нажмите ⌘N.
  2. Введите имя и адрес сервера. Если оставить поля пользователя и порта пустыми, будут использованы значения по умолчанию.
  3. В списке двойной клик выполняет подключение. Одиночный клик — это выбор.
💡 Если сервер уже подключался через терминал по ssh alias, заново вводить ничего не нужно. В меню боковой панели выберите «Импорт из ~/.ssh/config» (⌘⇧I) — так добавляются все такие серверы сразу. Можно также импортировать список сайтов FileZilla.

Смена языка

В меню Berth › Настройки (⌘,) выберите один из 20 языков. По умолчанию используется язык системы, а выбранный язык применяется только к этому приложению. Изменение вступает в силу после перезапуска приложения.

🗂Серверы и папки

Группировка в папки и наследование

Если объединить серверы в папку (⌘⇧N), настройки наследуются вниз. Достаточно один раз задать для папки имя пользователя или уровень «Осторожно» — и все серверы внутри неё унаследуют это значение. Это устройство существует, чтобы не вводить одно и то же значение двадцать раз для двадцати серверов.

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

Уровень «Осторожно» — разработка · стейджинг · продакшн

Уровень важнее цвета. Для продакшн опасные действия требуют дополнительного подтверждения. В списке сессий он заливается выбранным вами цветом и обозначается красной рамкой, поэтому несколько продакшн-серверов по-прежнему различаются по цвету. Там, где показан только один (диалоги подтверждения и т. п.), он остаётся красным как явное предупреждение.

Правила кликов

🔑Подключение и аутентификация

При первом подключении — доступ к папке

Berth соблюдает правила App Store (песочницу) и не читает домашнюю папку самовольно. При первом открытии сервера будет предложено один раз выбрать папку с настройками SSH, ключами и known_hosts (обычно это ~/.ssh). Выбор запоминается, и вопрос больше не появится. Если ключи хранятся в другом месте, можно выбрать домашнюю папку.

По той же причине локальная панель файлов использует выбранную вами папку в качестве корня — изменить её можно через заголовок панели, кнопкой «Открыть локальную папку», и этот выбор тоже запоминается.

Используется ~/.ssh/config как есть

При подключении по алиасу читаются host, порт, пользователь, файл ключа, ProxyJump и StrictHostKeyChecking из этой записи. Даже если сохранённый порт устарел, побеждает файл настроек.

⚠️ Две вещи не работают. ProxyCommand запускает внешнюю программу, поэтому блокируется песочницей — для промежуточного хоста используйте ProxyJump. ssh-agent тоже недоступен, поэтому файлы ключей читаются напрямую, а для ключа, защищённого паролем, пароль запрашивается при подключении.

Способ аутентификации

⚠️ Если сервер и так открывается простой командой ssh, подходит режим «Автоматически». Указание ключа «на всякий случай» скорее помешает подключению — будет опробован только этот один ключ.

Когда сервер запрашивает

Если пароль сохранён, при подключении он подставляется один раз вместо ручного ввода. На остальные вопросы — код двухфакторной аутентификации, повторный ввод неверного пароля, пароль для ключа, защищённого паролем — вы отвечаете сами: в окне «Сервер запрашивает» вопрос сервера показывается как есть. Чтобы не заблокировать учётную запись, сохранённый пароль подставляется автоматически только один раз, а всего вопрос задаётся не более трёх раз.

Чтобы не вводить пароль каждый раз

Щёлкните сервер правой кнопкой и выберите «Зарегистрировать открытый ключ на этом сервере…» — открытый ключ из ~/.ssh будет загружен на сервер. Со следующего раза подключение пойдёт по ключу.

Сохранённый пароль хранится только в Связке ключей macOS. В файле настроек остаётся лишь отметка «сохранено», а сам пароль туда не попадает.

Неизвестный сервер, изменившийся ключ хоста

При первом подключении к серверу показываются тип и отпечаток ключа, и вас спрашивают, запомнить ли его. Если запомнить, запись добавляется в ~/.ssh/known_hosts в том же виде, что и у ssh, и вопрос больше не появится.

Появляется и тогда, когда подлинность сервера отличается от прошлого раза. Причиной может быть атака «человек посередине» — или переустановка сервера. Berth не решает за вас, а даёт материал для решения — тип и отпечаток старого и нового ключа, а также команду для сверки прямо в консоли устройства. Проверив, нажмите «Удалить старый ключ и запомнить новый» — старая запись будет удалена (с резервной копией в known_hosts.old) и добавится новый ключ.

💡 Для устройств, которые прошиваются заново и каждый раз показывают это окно — например, отладочная плата — в настройках сервера можно включить «Не запоминать ключ хоста». Риск остаётся привязан к одному этому устройству: known_hosts при этом не трогается. Для уровня «Продакшн» этот параметр не включается.

Панель файлов (SFTP)

Отправка и скачивание

Слева — ваш Mac, справа — сервер. Перетащите файл или отправьте его сочетаниями ⌥⌘→ (отправка) · ⌥⌘← (скачивание). Ход передачи отображается в строке передач.

Панель файлов, следующая за терминалом

При выполнении cd в терминале удалённая панель переходит в ту же папку. Если это мешает, отключите слежение сочетанием ⌘⇧L.

Избранные места · вид

Показ различий

Включив режим сочетанием ⌘⇧Y, вы сравниваете локальные и удалённые файлы бок о бок и видите отличающиеся файлы и файлы, которых нет на одной из сторон. Используйте, когда нужно отправить только необходимое.

🌏 macOS и Linux записывают корейские, японские и вьетнамские имена файлов разными байтами. Berth сравнивает имена только для сопоставления пар, поэтому визуально одинаковый файл не распадается на «есть только локально» и «есть только на сервере». Для самой передачи используется имя ровно в том виде, в каком оно хранится на сервере.

Удаление

⌘⌫ по умолчанию перемещает файл в корзину на сервере и всегда запрашивает подтверждение. Если на сервере корзина отключена, об этом предупредят заранее — действие будет необратимым.

⌨️Терминал

Это настоящая оболочка, в которой vim·tmux·less работают без изменений. Выделяйте текст перетаскиванием мыши и копируйте сочетанием ⌘C — команда вставляется чисто, без заполняющих пробелов в конце строки.

Подтверждение вставки

При вставке нескольких строк сначала показывается, что именно будет выполнено. Вставка с переносами строк сразу превращается в команды. Потенциально опасные строки отмечаются с указанием причины.

Широкий вид

⌘↩ разворачивает текущую область на весь экран, повторное нажатие возвращает прежний вид. ⌥⌘↩ разворачивает только одну панель. Размер шрифта меняется сочетаниями ⌘+ · ⌘- · ⌘0. Очистите терминал клавишей ⌘L — экран и история прокрутки стираются, остаётся только текущая строка приглашения.

🔌Последовательная консоль (UART)

Выбор устройства

Сочетанием ⌃⌘N добавьте последовательную консоль и выберите подключённое устройство в настройках. Berth запоминает не путь, а само устройство — по серийному номеру, если он есть, иначе по типу устройства. Тот же прибор будет найден, даже если подключить его в другой USB-порт.

💡 Этот серийный номер принадлежит устройству, которое перечисляет USB. При USB-последовательном адаптере запоминается, по сути, сам адаптер — при его замене выбор устройства нужно будет сделать заново.

Скорость и параметры линии

Скорость можно выбрать из списка или ввести вручную (допустимы и нестандартные значения вроде 1,500,000 — главное, чтобы их принимал адаптер). По умолчанию установлено 8N1 · без управления потоком — это подходит для большинства консолей.

⚠️ UART без управления потоком может прекращать передачу при длительном или большом объёме данных. Это свойство самой линии, а не приложения (то же самое случится и в другой программе на том же кабеле). По-настоящему решает проблему включение управления потоком на 4-проводном кабеле или снижение скорости со стороны платы.

Панель истории

В сеансе последовательной консоли справа со временем накапливаются введённые команды и ответы на них. Ввод в местах, где запрашивался пароль, скрывается.

Горячие клавиши

В горячих клавишах приложения всегда присутствует . Сочетания с · оставлены оболочке и TUI-программам (vim·tmux) — приложение их не перехватывает.

⌨️ Мышь не нужна. У каждого действия здесь есть сочетание клавиш — для тех, кто предпочитает не отрывать руки от клавиатуры.
КлавишаДействие
⌘N · ⌃⌘N · ⌘⇧NДобавить сервер · Добавить последовательную консоль · Создать папку
⌘I · ⌘⇧IНастройки этого сервера · Импорт из ~/.ssh/config
⌘KКуда перейти — поиск по имени с мгновенным переходом
⌘1⌘9Переключение сеансов
⌃⌘← Перемещение между панелями
⌘↩ · ⌥⌘↩Развернуть / восстановить · Развернуть только эту панель
⌘⇧S · ⌥⌘↑ ⌥⌘↓Боковая панель · перемещение разделителя
⌥⌘→ · ⌥⌘←Отправка · скачивание
⌘D · ⌘R · ⌥⌘NЗакрепить/открепить · Перечитать · Новая папка
⌘↓ · ⌘↑ · ⌥⌘TПерейти внутрь · вернуться назад · дерево↔список
⌘⌫ · ⌘⇧FУдалить на сервере · Поиск на сервере
⌘⇧V · ⌘⇧L · ⌘⇧YПуть в терминал · следовать за терминалом · показ различий
⌘+ ⌘- ⌘0 · ⌘⇧WРазмер шрифта · закрыть этот сеанс
⌘L · ⌘] ⌘[Очистить терминал · Переключить вкладки правой панели
⌘C · ⌘⇧P · ⌘⇧U · ⌘?Копировать · В журнал · Отправить манифест снова · Руководство

Частые вопросы

Где хранится пароль?

Хранится только в Связке ключей macOS. В файле настроек остаётся лишь отметка «сохранено». Связка ключей открывается только один раз — в момент подключения.

Собирается ли статистика использования?

Нет. В приложении нет никакой аналитики. Не отслеживается, что вы открываете и к чему подключаетесь.

Последовательная консоль останавливается посреди работы.

Это свойство линии при большом объёме данных на UART без управления потоком. Если используется 4-проводной кабель, включите в настройках управление потоком (RTS/CTS). Если кабель 3-проводной, снизьте скорость со стороны платы или выводите данные через пейджер постранично.

Нужно ли заново вводить уже настроенный SSH?

Нет. При импорте из ~/.ssh/config подключение идёт по тому же алиасу, и читаются host, порт, пользователь, ключ и ProxyJump из этой записи.

У меня используется ProxyCommand.

ProxyCommand запускает внешнюю программу, поэтому в песочнице App Store он недоступен. Если в настройках используется промежуточный хост, замените его на ProxyJump — и всё заработает как прежде. ssh-agent недоступен по той же причине: файлы ключей читаются напрямую, а для ключа, защищённого паролем, пароль запрашивается при подключении.

Какие версии macOS поддерживаются?

macOS 14 (Sonoma) и новее, поддерживаются Apple Silicon и Intel.

Если это было полезно

Berth бесплатен. Поддержать разработку можно через страницу поддержки.