SSH目錄
使用願望清單,無論是否是WISH應用程序,您都可以有一個單個入口點。
作為服務器,它可用於在單個軟件包中啟動多個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
CLI和YAML配置文件。您也可以在沒有任何參數的情況下運行它即可在~/.ssh/config
中列出服務器。要在服務器模式下啟動願望清單,您需要使用serve
子命令:
wishlist serve
查看示例配置文件文件以及wishlist server --help
有關詳細信息。
如果要探索您的~/.ssh/config
,則可以在本地模式下運行願望列表:
wishlist
請注意,目前並非所有選項都得到支持。檢查註釋的示例配置以獲取參考。
願望列表也可作為庫提供,它允許您在同一過程中啟動多個應用程序。查看_example
文件夾以獲取一個工作示例。
在本地模式下運行時,願望清單將首先查看當前端點是否指定了IdentityFile
。如果是這樣,它將嘗試使用它。如果沒有,它將查看是否有可用的SSH代理,並使用它。否則,它將在~/.ssh
中嘗試常見的密鑰名稱。
當作為服務器運行時,願望清單將首先嘗試轉發當前的SSH代理。如果沒有代理,它將創建或使用.wishlist/client_ed25519
中的現有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
願望清單可以使用Zeroconf,SRV記錄和尾部尺寸發現端點。
您可以找到一個簡短的解釋和所有這些都吼叫的例子。
運行wishlist --help
以查看所有選項。
您可以配置願望列表以在尾網上找到所有節點,並將它們添加為端點:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
您可以使用提示來更改連接設置。
尾巴API鍵在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
查找的域名指定超時。
願望清單將在給定域中查找_ssh._tcp
服務。
您可以使用提示來更改連接設置。
您可以設置願望清單以從DNS SRV
記錄中查找節點:
wishlist --srv.domain example.com
默認情況下,願望清單將將端點的名稱設置為SRV
目標。但是,您可以使用以下格式的TXT
記錄自定義此:
wishlist.name full.address:22=thename
因此,在這種情況下,指向full.address
22
SRV
記錄將獲得名稱thename
。
您可以使用YAML配置文件中的hints
密鑰來提示設置到發現的端點。
檢查示例配置文件以了解可用的選項。
如果您將SSH配置文件作為願望清單配置文件,它將嘗試將主機與給定配置中的規則匹配。否則,將簡單地將服務添加到列表中。
不同之處在於,如果一個提示本身不會在TUI中顯示,則像SSH配置中的主機一樣。
願望列表將在當前工作目錄中的.wishlist
文件夾中讀取並存儲所有信息:
配置文件可以以YAML或SSH配置格式提供:
配置文件按以下順序嘗試:
-config
標誌.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顯示了許多Maas Lalani的興趣。
我們很想听聽您對這個項目的想法。隨時給我們留言!
麻省理工學院
魅力的一部分。
魅力熱愛開源•魅力喜歡開源
IE [[user config dir]]
:在UNIX系統$HOME/.config
。在達爾文上,它將是$HOME/Library/Application Support
。在Windows上,它將為%AppData%
。在計劃9上,它將是$home/lib
。 ↩↩2↩3