Das SSH -Verzeichnis
Mit der Wunschliste können Sie einen einzigen Einstiegspunkt für mehrere SSH -Endpunkte haben, unabhängig davon, ob es sich um Wunsch -Apps handelt oder nicht.
Als Server kann es verwendet werden, um mehrere SSH -Apps in einem einzelnen Paket zu starten und diese über SSH aufzulisten. Sie können auch Apps auflisten, die an anderer Stelle bereitgestellt werden.
Sie können den Befehl wishlist
auch verwenden, um in Ihrem ~/.ssh/config
oder in einer YAML -Konfigurationsdatei eine Verbindung zu Servern herzustellen und eine Verbindung herzustellen.
Verwenden Sie Ihren FAVE -Paketmanager:
# 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
Oder laden Sie ein vorgefertigter Binär- oder Paket von der Releases-Seite herunter.
Oder bauen Sie es einfach selbst auf (erfordert Go 1.19+):
git clone https://github.com/charmbracelet/wishlist.git
cd wishlist
go build ./cmd/wishlist/
Wenn Sie nur ein Verzeichnis vorhandener Server wünschen, können Sie die wishlist
-CLI und eine YAML -Konfigurationsdatei verwenden. Sie können es auch ohne Argumente ausführen, um die Server in Ihrem ~/.ssh/config
aufzulisten. Um die Wunschliste im Servermodus zu starten, müssen Sie den serve
Command verwenden:
wishlist serve
Überprüfen Sie die Beispielkonfigurationsdatei sowie wishlist server --help
für Details.
Wenn Sie Ihre ~/.ssh/config
erkunden möchten, können Sie die Wunschliste im lokalen Modus ausführen mit:
wishlist
Beachten Sie, dass derzeit nicht alle Optionen unterstützt werden. Überprüfen Sie die kommentierte Beispielkonfiguration als Referenz.
Die Wunschliste ist auch als Bibliothek erhältlich, mit der Sie mehrere Apps im selben Prozess starten können. Schauen Sie sich den Ordner _example
für ein funktionierendes Beispiel an.
Beim Ausführen im lokalen Modus wird die Wunschliste zunächst feststellen, ob der aktuelle Endpunkt über eine IdentityFile
angegeben ist. Wenn ja, wird es versuchen, das zu verwenden. Wenn nicht, wird sehen, ob ein SSH -Agent verfügbar ist, und verwenden Sie ihn. Andernfalls wird es die gängigen Schlüsselnamen in ~/.ssh
ausprobieren.
Wenn Sie als Server ausgeführt werden, versucht die Wunschliste zunächst, den aktuellen SSH -Agenten weiterzuleiten. Wenn es keinen Agenten gibt, wird ein vorhandenes ED25519 -Schlüssel erstellt oder verwendet, das in .wishlist/client_ed25519
vorhanden ist. Die Kennwortauthentifizierung wird derzeit nicht unterstützt.
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
Sie können dies auch zu Ihrem ~/.ssh/config
hinzufügen, beispielsweise:
Host wishlist
HostName foo.bar
Port 2222
ForwardAgent yes
UserKnownHostsFile /dev/null
Die Wunschliste kann Endpunkte mit Zeroconf, SRV -Datensätzen und Tailscale entdecken.
Sie können eine kurze Erklärung und Beispiele für alle brüllen finden.
Führen Sie wishlist --help
um alle Optionen anzuzeigen.
Sie können die Wunschliste so konfigurieren, dass alle Knoten in Ihrem Tailnet gesucht werden, und sie als Endpunkte hinzufügen:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
Sie können die Hinweise verwenden, um die Verbindungseinstellungen zu ändern.
Tailscale -API -Schlüssel verfallen nach 90 Tagen. Wenn Sie etwas möchten, von dem Sie nicht alle paar Monate eingreifen müssen, verwenden Sie OAuth -Kunden:
Erstellen Sie hier einen Kunden. Der einzige benötigte Umfang sind devices:read
.
Anstatt --tailscale.key
(oder $TAILSCALE_KEY
), set --tailscale.client.id
und --tailscale.client.secret
(oder $TAILSCALE_CLIENT_ID
bzw. $TAILSCALE_CLIENT_SECRET
) zu verwenden.
Sie können dies mit der Flag --zeroconf.enabled
aktivieren:
wishlist --zeroconf.enabled
Optional können Sie auch eine Zeitüberschreitung mit --zeroconf.timeout
und welche Domain mit --zeroconf.domain
suchen.
Die Wunschliste wird in der angegebenen Domain nach _ssh._tcp
-Diensten suchen.
Sie können die Hinweise verwenden, um die Verbindungseinstellungen zu ändern.
Sie können die Wunschliste einstellen, um Knoten aus DNS SRV
-Datensätzen zu finden:
wishlist --srv.domain example.com
Standardmäßig setzt Wishlist den Namen des Endpunkts auf das SRV
-Ziel. Sie können dies jedoch mit einem TXT
-Datensatz im folgenden Format anpassen:
wishlist.name full.address:22=thename
In diesem Fall erhält ein SRV
-Datensatz auf full.address
auf Port 22
den Namen thename
.
Sie können den hints
in der YAML -Konfigurationsdatei verwenden, um die Einstellungen in entdeckte Endpunkte zu Hinweise.
Überprüfen Sie die Beispielkonfigurationsdatei, um zu erfahren, welche Optionen verfügbar sind.
Wenn Sie eine SSH -Konfigurationsdatei als Wunschliste -Konfigurationsdatei verwenden, wird versucht, die Hosts mit den Regeln in der angegebenen Konfiguration zu entsprechen. Andernfalls werden die Dienste einfach zur Liste hinzugefügt.
Der Unterschied besteht darin, dass, wenn ein Hinweis selbst in der TUI nicht angezeigt wird, wie die Hosts in der SSH -Konfiguration.
Die Wunschliste wird alle Informationen in einem .wishlist
-Ordner im aktuellen Arbeitsverzeichnis lesen und speichern:
Konfigurationsdateien können entweder in YAML- oder SSH -Konfigurationsformaten bereitgestellt werden:
Die Konfigurationsdateien werden in der folgenden Reihenfolge ausprobiert:
-config
-Flag in YAML- oder SSH -Konfigurationsformaten.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
Der erste, der ohne Fehler geladen und analysiert wird, wird verwendet. Dies bedeutet, dass Sie einfach wishlist
ausführen und sofort ausgeführt werden können, wenn Sie Ihre gängigen gebrauchten Hosts in Ihrem ~/.ssh/config
haben. Wenn Sie dies nicht wollen, können Sie einen Pfad zu -config
übergeben, und es kann entweder eine YAML- oder eine SSH -Konfigurationsdatei sein.
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
Derzeit werden derzeit nicht alle SSH -Optionen unterstützt. Hier ist eine Liste derjenigen, die sind:
User
Hostname
Port
IdentityFiles
ForwardAgent
RequestTTY
RemoteCommand
SendEnv
SetEnv
ConnectTimeout
Include
PreferredAuthentications
ProxyJump
Das GIF oben zeigt viele Maas Lalanis Confettie.
Wir würden gerne Ihre Gedanken zu diesem Projekt hören. Fühlen Sie sich frei, uns eine Notiz zu geben!
MIT
Teil des Charmees.
Charme 热爱开源 • Charme liebt Open Source
dh [[user config dir]]
: Auf UNIX-Systemen wird es $XDG_CONFIG_HOME
gemäß https://specifications.freedesktop.org/Basedir-spec/Basedir-Spec--Latest.html sein, wenn nicht in der Lage ist, sonst $HOME/.config
. Auf Darwin wird es $HOME/Library/Application Support
sein. Unter Windows wird es %AppData%
sein. In Plan 9 wird es $home/lib
sein. ↩ ↩ 2 ↩ 3