Справочник SSH
С помощью WishList вы можете иметь единую точку входа для нескольких конечных точек SSH, независимо от того, являются ли они приложениями желания или нет.
Как сервер, его можно использовать для запуска нескольких приложений SSH в одном пакете и перечислить их по SSH. Вы можете перечислить приложения, предоставленные и в другом месте.
Вы также можете использовать команду wishlist
для перечисления и подключения к серверам в вашем ~/.ssh/config
или в файле конфигурации YAML.
Используйте свой любимый менеджер пакетов:
# macOS or Linux
brew install charmbracelet/tap/wishlist
# Arch Linux (btw)
yay -S wishlist-bin
# or
yay -S wishlist
# Windows (with winget)
winget install wishlist
# Windows (with Scoop)
scoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git
scoop install wishlist
# Nix
nix-env -iA nixpkgs.wishlist
# Debian/Ubuntu
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo " deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * * " | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install wishlist
# Fedora/RHEL
echo ' [charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key ' | sudo tee /etc/yum.repos.d/charm.repo
sudo yum install wishlist
Или загрузите предварительно скомпилированный бинар или пакет со страницы релизов.
Или просто создайте его сами (требуется 1,19+):
git clone https://github.com/charmbracelet/wishlist.git
cd wishlist
go build ./cmd/wishlist/
Если вам просто нужен каталог существующих серверов, вы можете использовать wishlist
и файл конфигурации YAML. Вы также можете просто запустить его без каких -либо аргументов, чтобы перечислить серверы в вашем ~/.ssh/config
. Чтобы начать список желаний в режиме сервера, вам нужно использовать подкоманду serve
:
wishlist serve
Проверьте пример файла файла конфигурации, а также wishlist server --help
для получения подробной информации.
Если вы хотите изучить ~/.ssh/config
, вы можете запустить список желаний в локальном режиме с:
wishlist
Обратите внимание, что не все варианты поддерживаются в данный момент. Проверьте закомментированный пример конфигурации для справки.
WishList также доступен в виде библиотеки, которая позволяет запустить несколько приложений в том же процессе. Проверьте папку _example
для рабочего примера.
При запуске в локальном режиме Wishlist сначала увидит, указана ли текущая конечная точка указанный IdentityFile
. Если это так, это попытается использовать это. Если нет, то он увидит, есть ли в наличии агента SSH, и использовать его. В противном случае он попробует общие имена ключей в ~/.ssh
.
При запуске в качестве сервера, WishList сначала попытается переслать текущего агента SSH. Если агента нет, он создаст или использует существующий ключ ED25519, присутствующий в .wishlist/client_ed25519
. Аутентификация пароля не поддерживается в данный момент.
eval (ssh-agent)
ssh-add -k # adds all your pubkeys
ssh-add -l # should list the added keys
ssh
-o ' ForwardAgent=yes ' # forwards the agent
-o ' UserKnownHostsFile=/dev/null ' # do not add to ~/.ssh/known_hosts, optional
-p 2222 # port
foo.bar # host
-t list # optional, app name
Например, вы также можете добавить это в ~/.ssh/config
:
Host wishlist
HostName foo.bar
Port 2222
ForwardAgent yes
UserKnownHostsFile /dev/null
WishList может обнаружить конечные точки, используя ZeroConf, SRV Records и Tailscale.
Вы можете найти краткое объяснение и примеры всех их реже.
Запустите wishlist --help
чтобы увидеть все варианты.
Вы можете настроить список желаний, чтобы найти все узлы в вашей хвостовой сете и добавить их в качестве конечных точек:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
Вы можете использовать подсказки, чтобы изменить настройки соединения.
Ключи API Tailscale истекают через 90 дней. Если вы хотите что -то, что не требует, чтобы вы вмешивались каждые пару месяцев, используйте клиентов OAuth:
Создайте клиент здесь. Единственная необходимая область - это devices:read
.
Вместо использования --tailscale.key
(или $TAILSCALE_KEY
), set --tailscale.client.id
и --tailscale.client.secret
(или $TAILSCALE_CLIENT_ID
и $TAILSCALE_CLIENT_SECRET
, соответственно).
Вы можете включить это, используя флаг --zeroconf.enabled
:
wishlist --zeroconf.enabled
Необязательно, вы также можете указать тайм -аут с помощью --zeroconf.timeout
и, который домен для поиска с --zeroconf.domain
.
WishList будет искать услуги _ssh._tcp
в данном домене.
Вы можете использовать подсказки, чтобы изменить настройки соединения.
Вы можете установить список желаний, чтобы найти узлы из DNS SRV
Records:
wishlist --srv.domain example.com
По умолчанию WishList установит имя конечной точки на цель SRV
. Однако вы можете настроить это с помощью записи TXT
в следующем формате:
wishlist.name full.address:22=thename
Таким образом, в этом случае запись SRV
, указывающая на full.address
на порту 22
получит имя thename
.
Вы можете использовать клавишу hints
в файле конфигурации YAML, чтобы подсказывать настройки в обнаруженные конечные точки.
Проверьте пример файла конфигурации, чтобы узнать, какие параметры доступны.
Если вы используете файл конфигурации SSH в качестве файла конфигурации Wishlist, он попытается сопоставить хосты с правилами в данной конфигурации. В противном случае услуги будут просто добавлены в список.
Разница в том, что, если сами намеки не будут показывать в TUI, так же будут хосты в конфигурации SSH.
WishList будет читать и хранить всю свою информацию в папке .wishlist
в текущем рабочем каталоге:
Файлы конфигурации могут быть предусмотрены в форматах конфигурации YAML или SSH:
Файлы конфигурации опробованы в следующем порядке:
-config
в форматах конфигурации YAML или SSH.wishlist/config.yaml
.wishlist/config.yml
.wishlist/config
[[user config dir]]/wishlist/config.yaml
1[[user config dir]]/wishlist/config.yml
1[[user config dir]]/wishlist/config
1$HOME/.ssh/config
/etc/ssh/ssh_config
Первый, который загружен и анализируется без ошибок, будет использоваться. Это означает, что если у вас есть общие используемые хост в вашем ~/.ssh/config
, вы можете просто запустить wishlist
и сразу же получить его. Это также означает, что если вы этого не хотите, вы можете пройти путь к -config
, и это может быть либо YAML, либо файл конфигурации SSH.
wishlist
mkdir .wishlist
$EDITOR .wishlist/config.yaml # either an YAML or a SSH config
docker run
-p 2222:22
-v $PWD /.wishlist:/.wishlist
docker.io/charmcli/wishlist:latest
Не все варианты SSH в настоящее время поддерживаются. Вот список тех, которые:
User
Hostname
Port
IdentityFiles
ForwardAgent
RequestTTY
RemoteCommand
SendEnv
SetEnv
ConnectTimeout
Include
PreferredAuthentications
ProxyJump
GIF выше показывает много конфету Мааса Лалани.
Мы хотели бы услышать ваши мысли об этом проекте. Не стесняйтесь бросить нам записку!
Грань
Часть очарования.
Очарование 热爱开源 • Очарование любит открытый исходный код
т.е. [[user config dir]]
: в системах Unix он будет $XDG_CONFIG_HOME
, как указано https://speciationations.freedesktop.org/basedir-pec/basedir-pec-latest.html, если не пускок, иначе $HOME/.config
. На Дарвине это будет $HOME/Library/Application Support
. В Windows это будет %AppData%
. На плане 9 это будет $home/lib
. ↩ ↩ 2 ↩ 3