O diretório ssh
Com a lista de desejos, você pode ter um único ponto de entrada para vários pontos de extremidade SSH, sejam eles aplicativos de desejo ou não.
Como servidor, ele pode ser usado para iniciar vários aplicativos SSH em um único pacote e listá -los sobre o SSH. Você também pode listar aplicativos fornecidos em outros lugares.
Você também pode usar o comando wishlist
para listar e conectar aos servidores no seu ~/.ssh/config
ou em um arquivo de configuração da YAML.
Use seu gerenciador de pacotes 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
Ou faça o download de uma página binária ou pacote pré-compilada na página de lançamentos.
Ou apenas construa você mesmo (requer go 1.19+):
git clone https://github.com/charmbracelet/wishlist.git
cd wishlist
go build ./cmd/wishlist/
Se você deseja apenas um diretório de servidores existentes, pode usar a wishlist
da CLI e um arquivo de configuração da YAML. Você também pode executá -lo sem argumentos para listar os servidores no seu ~/.ssh/config
. Para iniciar a lista de desejos no modo de servidor, você precisará usar o subcomando serve
:
wishlist serve
Verifique o arquivo de arquivo de configuração de exemplo, bem como wishlist server --help
para obter detalhes.
Se você deseja explorar sua ~/.ssh/config
, poderá executar a lista de desejos no modo local com:
wishlist
Observe que nem todas as opções são suportadas neste momento. Verifique a configuração do exemplo comentado para obter referência.
A lista de desejos também está disponível como uma biblioteca, que permite iniciar vários aplicativos no mesmo processo. Confira a pasta _example
para um exemplo de trabalho.
Ao ser executado no modo local, a lista de desejos verá primeiro se o terminal atual possui um IdentityFile
especificado. Nesse caso, tentará usar isso. Caso contrário, ele verá se há um agente SSH disponível e use -o. Caso contrário, ele tentará os nomes comuns em ~/.ssh
.
Ao executar como servidor, a lista de desejos tentará encaminhar o agente SSH atual. Se não houver agente, ele criará ou usará uma chave ED25519 existente presente em .wishlist/client_ed25519
. A autenticação de senha não é suportada neste 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
Você também pode adicionar isso ao seu ~/.ssh/config
, por exemplo:
Host wishlist
HostName foo.bar
Port 2222
ForwardAgent yes
UserKnownHostsFile /dev/null
A lista de desejos pode descobrir pontos de extremidade usando Zeroconf, SRV Records e TailScale.
Você pode encontrar uma breve explicação e exemplos de todos eles abaixo.
Execute wishlist --help
para ver todas as opções.
Você pode configurar a lista de desejos para encontrar todos os nós no seu Tailnet e adicioná -los como terminais:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
Você pode usar as dicas para alterar as configurações de conexão.
As chaves da API de escala traseira expirarem após 90 dias. Se você quiser algo que não exija que você intervenha a cada dois meses, use clientes da OAuth:
Crie um cliente aqui. O único escopo necessário são devices:read
.
Em vez de usar --tailscale.key
(ou $TAILSCALE_KEY
), set --tailscale.client.id
e --tailscale.client.secret
(ou $TAILSCALE_CLIENT_ID
e $TAILSCALE_CLIENT_SECRET
, respectivamente).
Você pode ativar isso usando o sinalizador --zeroconf.enabled
:
wishlist --zeroconf.enabled
Opcionalmente, você também pode especificar um tempo limite com --zeroconf.timeout
e qual domínio procurar com --zeroconf.domain
.
A lista de desejos procurará os serviços _ssh._tcp
no domínio fornecido.
Você pode usar as dicas para alterar as configurações de conexão.
Você pode configurar a lista de desejos para encontrar nós da DNS SRV
Records:
wishlist --srv.domain example.com
Por padrão, a lista de desejos definirá o nome do terminal para o destino SRV
. Você pode, no entanto, personalizá -lo com um registro TXT
no seguinte formato:
wishlist.name full.address:22=thename
Portanto, nesse 22
, um registro SRV
apontando para thename
full.address
.
Você pode usar a tecla hints
no arquivo de configuração YAML para sugerir configurações de terminais descobertos.
Verifique o arquivo de configuração de exemplo para saber quais opções estão disponíveis.
Se você estiver usando um arquivo de configuração SSH como o arquivo de configuração da lista de desejos, ele tentará corresponder aos hosts com as regras na configuração fornecida. Caso contrário, os serviços serão simplesmente adicionados à lista.
A diferença é que, se um próprio dicas não aparecer no TUI, como os hosts na configuração do SSH.
A lista de desejos lerá e armazenará todas as suas informações em uma pasta .wishlist
no diretório de trabalho atual:
Os arquivos de configuração podem ser fornecidos nos formatos de configuração YAML ou SSH:
Os arquivos de configuração são tentados na seguinte ordem:
-config
nos formatos de configuração 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
O primeiro que é carregado e analisado sem erros será usado. Isso significa que, se você tiver seus hosts usados comuns em sua ~/.ssh/config
, poderá simplesmente executar wishlist
e executá -la imediatamente. Isso também significa que, se você não quiser, pode passar um caminho para -config
, e pode ser um YAML ou um arquivo de configuração 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
Atualmente, nem todas as opções SSH são suportadas. Aqui está uma lista dos que são:
User
Hostname
Port
IdentityFiles
ForwardAgent
RequestTTY
RemoteCommand
SendEnv
SetEnv
ConnectTimeout
Include
PreferredAuthentications
ProxyJump
O GIF acima mostra muito Confetty de Maas Lalani.
Gostaríamos muito de ouvir seus pensamentos sobre este projeto. Sinta -se à vontade para nos largar uma nota!
Mit
Parte do charme.
Charme 热爱开源 • charme adora código aberto
ie [[user config dir]]
: Nos sistemas UNIX, será $XDG_CONFIG_HOME
conforme especificado por https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html se não estiver por vazio, caso contrário, $HOME/.config
. Em Darwin, será $HOME/Library/Application Support
. No Windows, será %AppData%
. No Plano 9, será $home/lib
. ↩ ↩ 2 ↩ 3