better-ssh: потому что я устал вспоминать IP-адреса
≈ 1 минута
Когда серверов три, всё просто. Знаешь их наизусть, подключаешься не задумываясь.
Когда серверов больше десяти, начинается другое. Разные проекты, разные клиенты, разные окружения. Dev, staging, prod. VPS для экспериментов, рабочие машины, домашний сервер. Каждый со своим IP, своим пользователем, иногда нестандартным портом.
~/.ssh/config помогает. Но всё равно нужно помнить имя хоста, правильно набрать команду. И пароли это отдельная история: хранить в plaintext неприятно, каждый раз вводить вручную тоже.
Я написал better-ssh, CLI с интерактивным меню.
Запускаешь, видишь список серверов. Последние использованные вверху. Можно набрать часть имени и найти нужный. Можно прибить любимые серверы в начало списка, они всегда там. Выбрал, подключился.
$ better-ssh
★ prod-api 192.168.1.10 ubuntu
★ home-server 10.0.0.5 alex
──────────────────────────────────────────
staging-db 10.0.0.22 postgres
dev-vm 192.168.1.50 dev
client-vps 45.67.89.10 root
> _
Главная механика в связке сервер + пароль. К каждому серверу можно привязать пароль: он хранится зашифрованным через Fernet, ключ производится от твоего SSH-ключа. Никакого отдельного мастер-пароля. При подключении пароль автоматически оказывается в буфере обмена, ты просто вставляешь его, когда SSH спрашивает.
Это принципиальный момент. SSH pass-фразы и хранение паролей в агентах это история с компромиссами: где-то небезопасно, где-то неудобно, где-то вообще не работает на Windows. Буфер обмена другое дело. Он локальный, работает везде, с ним умеет любое приложение. Выбрал сервер, пароль уже в буфере, подключился, вставил.
Если уже есть ~/.ssh/config, можно импортировать оттуда одной командой, не вводить всё заново.
better-ssh import-ssh-config
Работает на Windows, macOS, Linux. Под капотом Python 3.12, uv для управления зависимостями.
Инструмент вырос из усталости от того, что каждый раз приходилось думать о деталях вместо того, чтобы просто подключиться. Теперь не думаю.