better-ssh: потому что я устал вспоминать IP-адреса
Когда серверов три — всё просто. Знаешь их наизусть, подключаешься не задумываясь.
Когда серверов больше десяти — начинается другое. Разные проекты, разные клиенты, разные окружения. 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 для управления зависимостями.
Инструмент вырос из усталости. Не от SSH как такового — от того, что каждый раз приходилось думать о деталях вместо того, чтобы просто подключиться. Теперь не думаю.