El directorio SSH
Con Wishlist puede tener un solo punto de entrada para múltiples puntos finales SSH, ya sean aplicaciones de deseos o no.
Como servidor, se puede usar para iniciar múltiples aplicaciones SSH dentro de un solo paquete y enumerarlas a través de SSH. También puede enumerar aplicaciones proporcionadas en otro lugar.
También puede usar el comando wishlist
para enumerar y conectarse a servidores en su ~/.ssh/config
o en un archivo de configuración YAML.
Use su administrador de paquetes favoritos:
# 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
O descargue un binario o paquete precompilado desde la página de versiones.
O simplemente construirlo usted mismo (requiere GO 1.19+):
git clone https://github.com/charmbracelet/wishlist.git
cd wishlist
go build ./cmd/wishlist/
Si solo desea un directorio de servidores existentes, puede usar el CLI wishlist
y un archivo de configuración YAML. También puede ejecutarlo sin ningún argumento para enumerar los servidores en su ~/.ssh/config
. Para iniciar la lista de deseos en modo servidor, deberá usar el subcomand serve
:
wishlist serve
Verifique el archivo de archivo de configuración de ejemplo, así como wishlist server --help
para obtener más detalles.
Si desea explorar su ~/.ssh/config
, puede ejecutar la lista de deseos en modo local con:
wishlist
Tenga en cuenta que no todas las opciones son compatibles en este momento. Verifique la configuración de ejemplo comentada como referencia.
Wishlist también está disponible como una biblioteca, que le permite iniciar varias aplicaciones dentro del mismo proceso. Consulte la carpeta _example
para obtener un ejemplo de trabajo.
Al ejecutar en modo local, Wishlist primero verá si el punto final actual tiene un IdentityFile
especificado. Si es así, intentará usar eso. Si no es así, verá si hay un agente SSH disponible y usarlo. De lo contrario, intentará los nombres de clave comunes en ~/.ssh
.
Al ejecutar como servidor, Wishlist primero intentará reenviar el agente SSH actual. Si no hay agente, creará o usará una clave ED25519 existente presente en .wishlist/client_ed25519
. La autenticación de contraseña no es compatible en este momento.
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
También puede agregar esto a su ~/.ssh/config
, por ejemplo:
Host wishlist
HostName foo.bar
Port 2222
ForwardAgent yes
UserKnownHostsFile /dev/null
La lista de deseos puede descubrir puntos finales con ZeroConf, SRV Records y TailScale.
Puede encontrar una breve explicación y ejemplos de todos ellos a continuación.
Ejecute wishlist --help
para ver todas las opciones.
Puede configurar la lista de deseos para encontrar todos los nodos en su Netnet y agregarlos como puntos finales:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
Puede usar las sugerencias para cambiar la configuración de conexión.
Las claves API de escala de cola caducan después de 90 días. Si desea algo que no requiere que intervenga cada dos meses, use clientes OAuth:
Crea un cliente aquí. El único alcance necesario son devices:read
.
En lugar de usar --tailscale.key
(o $TAILSCALE_KEY
), set --tailscale.client.id
y --tailscale.client.secret
(o $TAILSCALE_CLIENT_ID
y $TAILSCALE_CLIENT_SECRET
, respectivamente).
Puede habilitar esto usando la bandera --zeroconf.enabled
:
wishlist --zeroconf.enabled
Opcionalmente, también puede especificar un tiempo de espera con --zeroconf.timeout
y, qué dominio buscar con --zeroconf.domain
.
Lista de deseos buscará los servicios _ssh._tcp
en el dominio dado.
Puede usar las sugerencias para cambiar la configuración de conexión.
Puede establecer una lista de deseos para encontrar nodos de los registros DNS SRV
:
wishlist --srv.domain example.com
Por defecto, WishList establecerá el nombre del punto final en el objetivo SRV
. Sin embargo, puede personalizar eso con un registro TXT
en el siguiente formato:
wishlist.name full.address:22=thename
Entonces, en este caso, un registro SRV
que apunta a full.address
. La dirección en el puerto 22
obtendrá el thename
.
Puede usar la tecla hints
en el archivo de configuración YAML para sugerir la configuración en puntos finales descubiertos.
Verifique el archivo de configuración de ejemplo para saber qué opciones están disponibles.
Si está utilizando un archivo de configuración SSH como archivo de configuración de la lista de deseos, intentará coincidir con los hosts con las reglas en la configuración dada. De lo contrario, los servicios simplemente se agregarán a la lista.
La diferencia es que si un sugerencias en sí no se muestran en el TUI, como de los hosts en la configuración de SSH.
Wishlist leerá y almacenará toda su información en una carpeta .wishlist
en el directorio de trabajo actual:
Los archivos de configuración se pueden proporcionar en formatos de configuración YAML o SSH:
Los archivos de configuración se prueban en el siguiente orden:
-config
en formatos de configuración YAML o 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
Se utilizará el primero que se carga y analiza sin errores. Esto significa que si tiene sus hosts usados comunes en su ~/.ssh/config
, simplemente puede ejecutar wishlist
y ejecutarlo de inmediato. También significa que si no desea eso, puede pasar una ruta a -config
, y puede ser un archivo YAML o un archivo de configuración 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
No todas las opciones SSH son compatibles actualmente. Aquí hay una lista de los que son:
User
Hostname
Port
IdentityFiles
ForwardAgent
RequestTTY
RemoteCommand
SendEnv
SetEnv
ConnectTimeout
Include
PreferredAuthentications
ProxyJump
El GIF anterior muestra mucho de los confetetos de Maas Lalani.
Nos encantaría escuchar sus pensamientos sobre este proyecto. ¡No dude en dejarnos una nota!
MIT
Parte del encanto.
Encanto 热爱开源 • El encanto ama el código abierto
es decir, [[user config dir]]
: en sistemas UNIX, será $XDG_CONFIG_HOME
según lo especificado por https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html, si no estáado, más $HOME/.config
. En Darwin, será $HOME/Library/Application Support
. En Windows, será %AppData%
. En el Plan 9, será $home/lib
. ↩ ↩ 2 ↩ 3