Le répertoire SSH
Avec WishList, vous pouvez avoir un seul point d'entrée pour plusieurs points de terminaison SSH, qu'il s'agisse d'applications de souhait ou non.
En tant que serveur, il peut être utilisé pour démarrer plusieurs applications SSH dans un seul package et les répertorier sur SSH. Vous pouvez également énumérer les applications fournies ailleurs.
You can also use the wishlist
command to list and connect to servers in your ~/.ssh/config
or in a YAML configuration file.
Utilisez votre gestionnaire de packages préférés:
# 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
Ou téléchargez un binaire ou un package pré-compilé à partir de la page des versions.
Ou tout simplement le construire vous-même (nécessite Go 1.19+):
git clone https://github.com/charmbracelet/wishlist.git
cd wishlist
go build ./cmd/wishlist/
Si vous voulez juste un répertoire de serveurs existants, vous pouvez utiliser le wishlist
CLI et un fichier de configuration YAML. Vous pouvez également l'exécuter sans aucun argument pour répertorier les serveurs dans votre ~/.ssh/config
. Pour démarrer WishList en mode serveur, vous devrez utiliser la sous-commande serve
:
wishlist serve
Vérifiez l'exemple de fichier de configuration ainsi que wishlist server --help
pour plus de détails.
Si vous souhaitez explorer votre ~/.ssh/config
, vous pouvez exécuter WishList en mode local avec:
wishlist
Notez que toutes les options ne sont pas prises en charge en ce moment. Vérifiez la configuration de l'exemple commenté pour référence.
WishList est également disponible en tant que bibliothèque, qui vous permet de démarrer plusieurs applications dans le même processus. Consultez le dossier _example
pour un exemple de travail.
Lors de l'exécution en mode local, WishList verra d'abord si le point de terminaison actuel a un IdentityFile
spécifié. Si c'est le cas, il essaiera de l'utiliser. Sinon, il verra s'il y a un agent SSH disponible et l'utiliser. Sinon, il essaiera les noms de clés communs dans ~/.ssh
.
Lors de l'exécution en tant que serveur, WishList tentera d'abord de transférer l'agent SSH actuel. S'il n'y a pas d'agent, il créera ou utilisera une clé ED25519 existante présente dans .wishlist/client_ed25519
. L'authentification du mot de passe n'est pas prise en charge en ce moment.
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
Vous pouvez également l'ajouter à votre ~/.ssh/config
, par exemple:
Host wishlist
HostName foo.bar
Port 2222
ForwardAgent yes
UserKnownHostsFile /dev/null
WishList peut découvrir des points de terminaison à l'aide de ZeroConf, SRV Records et TailScale.
Vous pouvez trouver une brève explication et des exemples de tous ci-dessous.
Exécutez wishlist --help
pour voir toutes les options.
Vous pouvez configurer WishList pour trouver tous les nœuds de votre tailnet et les ajouter sous forme de points de terminaison:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
Vous pouvez utiliser les conseils pour modifier les paramètres de connexion.
Les touches API à l'échelle tailsale expirent après 90 jours. Si vous voulez quelque chose qui ne vous oblige pas à intervenir tous les deux mois, utilisez les clients OAuth:
Créez un client ici. La seule portée nécessaire est devices:read
.
Au lieu d'utiliser --tailscale.key
(ou $TAILSCALE_KEY
), set --tailscale.client.id
et --tailscale.client.secret
(ou $TAILSCALE_CLIENT_ID
et $TAILSCALE_CLIENT_SECRET
, respectivement).
Vous pouvez l'activer en utilisant le drapeau --zeroconf.enabled
.
wishlist --zeroconf.enabled
Facultativement, vous pouvez également spécifier un délai d'attente avec --zeroconf.timeout
et, quel domaine à rechercher avec --zeroconf.domain
.
WishList recherchera les services _ssh._tcp
dans le domaine donné.
Vous pouvez utiliser les conseils pour modifier les paramètres de connexion.
Vous pouvez définir la liste de souhaits pour trouver des nœuds à partir des enregistrements DNS SRV
:
wishlist --srv.domain example.com
Par défaut, WishList définira le nom du point de terminaison sur la cible SRV
. Vous pouvez cependant personnaliser cela avec un enregistrement TXT
dans le format suivant:
wishlist.name full.address:22=thename
Ainsi, dans ce cas, un enregistrement SRV
pointant vers full.address
sur le port 22
obtiendra le nom thename
.
Vous pouvez utiliser la clé hints
dans le fichier de configuration YAML pour faire allusion aux paramètres dans des points de terminaison découverts.
Vérifiez l'exemple de fichier de configuration pour savoir quelles options sont disponibles.
Si vous utilisez un fichier de configuration SSH comme fichier de configuration de WishList, il essaiera de faire correspondre les hôtes avec les règles de la configuration donnée. Sinon, les services seront simplement ajoutés à la liste.
La différence est que si un indice eux-mêmes ne s'affiche pas dans le TUI, comme les hôtes dans la configuration SSH le feront.
WishList lira et stockera toutes ses informations dans un dossier .wishlist
dans le répertoire de travail actuel:
Les fichiers de configuration peuvent être fournis dans des formats de configuration YAML ou SSH:
Les fichiers de configuration sont essayés dans l'ordre suivant:
-config
dans les formats de configuration YAML ou 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
Le premier qui est chargé et analysé sans erreurs sera utilisé. Cela signifie que si vous avez vos hôtes d'occasion communs dans votre ~/.ssh/config
, vous pouvez simplement exécuter wishlist
et le faire fonctionner immédiatement. Cela signifie également que si vous ne voulez pas cela, vous pouvez passer un chemin à -config
, et il peut s'agir d'un fichier YAML ou d'un fichier de configuration 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
Toutes les options SSH ne sont pas actuellement prises en charge. Voici une liste de celles qui sont:
User
Hostname
Port
IdentityFiles
ForwardAgent
RequestTTY
RemoteCommand
SendEnv
SetEnv
ConnectTimeout
Include
PreferredAuthentications
ProxyJump
Le GIF ci-dessus montre beaucoup de confort de Maas Lalani.
Nous aimerions entendre vos réflexions sur ce projet. N'hésitez pas à nous laisser une note!
Mit
Partie du charme.
Charme 热爱开源 • Le charme aime l'open source
c'est-à-dire [[user config dir]]
: sur les systèmes Unix, ce sera $XDG_CONFIG_HOME
comme spécifié par https://specifications.freedesktop.org/basedir-spec/basedir-scp-latest.html si non empty, else $HOME/.config
. Sur Darwin, ce sera $HOME/Library/Application Support
. Sur Windows, ce sera %AppData%
. Sur le plan 9, ce sera $home/lib
. ↩ ↩ 2 ↩ 3