
Терминальный набор для удаленного доступа с поддержкой SSH, облачных инвентаризаций, коннекторов от провайдеров, параллельных команд, рабочих пространств mux, передачи файлов и мониторинга.
ls + ssh = lssh
lssh — это нативный терминальный набор инструментов для удалённого доступа, предназначенный для работы с SSH, инвентаризацией в облаке и коннекторами от провайдеров.
Он позволяет выбирать хосты из конфигурации OpenSSH, конфигурации lssh или инвентаризации провайдеров, а затем управлять ими через собственный SSH или бэкенды коннекторов, такие как AWS SSM, EC2 Instance Connect Endpoint, WinRM, Telnet и пользовательские провайдеры.
Используйте его для интерактивных оболочек, параллельных команд, mux-рабочих пространств, передачи файлов, синхронизации, монтирования и мониторинга. Хосты, работающие через коннектор, предоставляют только те операции, которые поддерживает их коннектор.
brew install blacknon/lssh/lssh
go install github.com/blacknon/lssh/cmd/lssh@latest
Функции инвентаризации и коннекторов от провайдеров используют отдельные исполняемые файлы провайдеров.
Если вы устанавливаете только cmd/lssh, эти бинарные файлы провайдеров не устанавливаются автоматически.
Для локальной разработки установите встроенные провайдеры с помощью:
mise run provider_install
Для сборок релиза установите либо комплексный архив lssh-complete_*, либо добавьте соответствующий архив lssh-providers_* из GitHub Releases.
Дополнительные сведения об установке, включая другие варианты и платформенные особенности, см. в docs/install.md.
Уже используете ~/.ssh/config?
Просто выполните:
lssh
Хотите сгенерировать конфигурацию lssh из существующей конфигурации SSH?
lssh --generate-lssh-conf > ~/.lssh.toml
lssh построен на простом рабочем процессе:
Вы также можете напрямую указать один хост, если уже знаете, куда подключаться:
lssh -H my-server
Подробнее о форматах конфигурации и настройках см. в cmd/lssh/README.md.
Хотите быстро попробовать lssh с готовой к запуску локальной средой?
Начните с demo/README.md.
Для сценария с коннектором telnet и многоволновым провайдером используйте demo-telnet-provider/README.md.
lssh поддерживает как вашу существующую конфигурацию OpenSSH, так и собственный формат конфигурации.
Если вы хотите быстро начать работу, можете продолжать использовать ~/.ssh/config как есть. Если вам нужно больше метаданных о хостах и настроек, ориентированных на рабочий процесс, вы можете перейти на конфигурацию lssh.
Вы также можете сгенерировать конфигурацию lssh из существующей конфигурации SSH:
lssh --generate-lssh-conf > ~/.lssh.toml
Даже после перехода на конфигурацию lssh вы можете по-прежнему указывать на существующую конфигурацию OpenSSH и загружать хосты оттуда:
[sshconfig.default]
path = "~/.ssh/config"
Подробнее о форматах конфигурации и настройках см. в docs/configuration.md.
lssh может работать не только со статическими записями конфигурации SSH.
Провайдеры позволяют получать хосты из внешних источников инвентаризации, разрешать секреты непосредственно перед подключением и использовать не-SSH бэкенды подключения, такие как облачные управляемые коннекторы.
В версии v0.10.0 рабочие процессы с инвентаризацией через провайдеров и секретами считаются beta.
Доступ через коннекторы, отличный от собственного SSH, остаётся экспериментальным, особенно для облачных управляемых сред выполнения и не-SSH бэкендов.
Если вы хотите попробовать потоки, ориентированные на провайдеров, локально, начните с этих демонстраций:
Обзор архитектуры и протокола провайдера начните с provider/README.md. Подробности по категориям также описаны в inventory, connector, secret и mixed.
В данный репозиторий включены следующие реализации провайдеров.
|
provider-inventory-proxmox Создаёт записи хостов из инвентаризации Proxmox. |
|
provider-connector-openssh Использует совместимую с OpenSSH обработку подключений в качестве коннектора на основе провайдера. |
| provider-mixed-aws-ec2 Объединяет инвентаризацию EC2 с коннекторами AWS SSM и EC2 Instance Connect Endpoint. Сценарии, близкие к собственному SSH, работоспособны, а поведение, специфичное для коннекторов, остаётся экспериментальным. |
Проект lssh включает несколько инструментов для рабочих процессов, ориентированных на SSH.
lssh, переадресация и использование локального rcЕсли вы оцениваете lssh, стоит также взглянуть на эти проекты.
Они пересекаются с частями набора, но каждый обычно охватывает более узкую часть общего рабочего процесса.
lssh отличаетсяlssh объединяет выбор хостов, интерактивный SSH, параллельное выполнение команд, переадресацию и цели, поддерживаемые коннекторами и провайдерами.lsshell фокусируется на параллельных интерактивных рабочих процессах оболочки, а не просто на запуске множества терминалов.lscp, lsftp и lssync охватывают передачу файлов и синхронизацию как команды первого уровня в том же наборе.lsmux предоставляет панельное рабочее пространство SSH, а не только шаблонизацию сессий.lspipe позволяет повторно использовать выбранные хосты из локальных конвейеров и автоматизации.
![]() Интерактивный выбор хостов |
![]() Параллельное выполнение команд |
![]() Mux-рабочий процесс |
![]() Mux-рабочий процесс с командой |
|
provider-connector-telnet Обеспечивает доступ к целям telnet через интерфейс коннектора. |
|
provider-connector-winrm Выполняет команды для целей WinRM. Поддержка интерактивной оболочки в версии v0.10.0 отсутствует. |
|
provider-mixed-azure-compute Создаёт инвентаризацию Azure Compute с настройками доступа с учётом коннекторов. |
|
provider-mixed-gcp-compute Создаёт инвентаризацию Google Compute Engine с настройками доступа с учётом коннекторов. |
|
provider-secret-bitwarden Разрешает ссылки на секреты из [Bitwarden](https://bitwarden.com/). |
provider-secret-onepassword Разрешает ссылки на секреты из [1Password](https://1password.com/). |
provider-secret-custom-script Разрешает ссылки на секреты через пользовательские локальные скрипты. |
|
provider-secret-os-keychain Разрешает ссылки на секреты из локальной связки ключей ОС. |
![]() lssh core / stableИнтерактивный доступ по SSH, параллельные команды и режимы переадресации. |
![]() lscp transfer / stableКопирование в стиле SCP через SSH/SFTP, включая передачу между удалёнными хостами. |
![]() lsftp transfer / stableИнтерактивная оболочка SFTP для просмотра и передачи файлов. |
![]() lsshell sysadmin / betaПараллельная интерактивная оболочка с широковещательными и целевыми командами. |
![]() lsmux sysadmin / betaПанельное рабочее пространство SSH для многопользовательских терминальных рабочих процессов. |
![]() lsmon monitor / betaИнтерфейс мониторинга нескольких хостов через SSH без дополнительных удалённых агентов. |
![]() lssync transfer / betaДревовидная синхронизация через SSH/SFTP с демоном и двунаправленными режимами. |
![]() lsdiff sysadmin / betaСравнение удалённых файлов с нескольких хостов в синхронизированном TUI. |
![]() lspipe sysadmin / alphaПостоянные сессии хостов, доступные для повторного использования из локальных конвейеров и автоматизации. |
lsshfstransfer / betaМонтирование удалённого каталога через `FUSE на Linux` или `NFS на macOS`. |
| Проект | Ближайшие команды lssh | Основная направленность | Чем отличается от lssh |
|---|
sshs | lssh | Средство выбора хостов SSH на основе TUI | По духу похож на специализированный выборщик хостов, но lssh также охватывает параллельное выполнение, переадресацию, mux-рабочие процессы и цели, поддерживаемые провайдерами/коннекторами. |
ClusterSSH (cssh) | lssh -P, lsmux, lsshell | Многопользовательское интерактивное администрирование | Сильная сторона — широковещательный ввод в несколько терминалов; lsshell и lsmux лучше подходят, когда нужны синхронизированные рабочие процессы оболочки в одном наборе. |
pssh | lssh -p, lscp, lssync | Параллельное выполнение команд и инструменты передачи | Хорошо подходит для параллельных задач в CLI, в то время как lssh добавляет выбор хостов через TUI, интерактивные рабочие процессы и более интегрированный набор команд. |
tmuxinator | lssh -P, lsmux | Управление макетами сессий tmux | Отлично подходит для предопределённых рабочих пространств tmux, но сам по себе не является средством выбора хостов SSH или передачи файлов. lsmux с самого начала ориентирован на SSH. |