ไดเรกทอรี SSH
ด้วย Wishlist คุณสามารถมีจุดเริ่มต้นเดียวสำหรับจุดสิ้นสุด SSH หลายจุดไม่ว่าจะเป็นแอพที่ต้องการหรือไม่
ในฐานะเซิร์ฟเวอร์สามารถใช้เพื่อเริ่มแอพ 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
และไฟล์กำหนดค่า YAML นอกจากนี้คุณยังสามารถเรียกใช้งานได้โดยไม่มีอาร์กิวเมนต์ใด ๆ เพื่อแสดงรายการเซิร์ฟเวอร์ใน ~/.ssh/config
ของคุณ ในการเริ่มต้นสิ่งที่อยากได้ในโหมดเซิร์ฟเวอร์คุณจะต้องใช้คำสั่งย่อย serve
:
wishlist serve
ตรวจสอบไฟล์ไฟล์กำหนดค่าตัวอย่างเช่นเดียวกับ wishlist server --help
สำหรับรายละเอียด
หากคุณต้องการสำรวจ ~/.ssh/config
ของคุณคุณสามารถเรียกใช้สิ่งที่อยากได้ในโหมดท้องถิ่นด้วย:
wishlist
โปรดทราบว่าไม่ได้รับการสนับสนุนตัวเลือกทั้งหมดในขณะนี้ ตรวจสอบตัวอย่างการกำหนดค่าความคิดเห็นสำหรับการอ้างอิง
Wishlist ยังมีอยู่ในห้องสมุดซึ่งช่วยให้คุณสามารถเริ่มต้นแอพหลายตัวในกระบวนการเดียวกัน ตรวจสอบโฟลเดอร์ _example
สำหรับตัวอย่างการทำงาน
เมื่อทำงานในโหมดท้องถิ่น Wishlist จะดูก่อนที่จุดสิ้นสุดปัจจุบันมีการระบุ IdentityFile
หรือไม่ ถ้าเป็นเช่นนั้นมันจะพยายามใช้สิ่งนั้น หากไม่เป็นเช่นนั้นจะดูว่ามีเอเจนต์ SSH หรือไม่และใช้งานหรือไม่ มิฉะนั้นจะลองใช้ชื่อคีย์ทั่วไปใน ~/.ssh
เมื่อทำงานเป็นเซิร์ฟเวอร์ Wishlist จะพยายามส่งต่อเอเจนต์ SSH ปัจจุบันก่อน หากไม่มีเอเจนต์มันจะสร้างหรือใช้คีย์ ED25519 ที่มีอยู่ใน. .wishlist/client_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
Wishlist สามารถค้นพบจุดสิ้นสุดโดยใช้ Zeroconf, SRV Records และ Tailscale
คุณสามารถค้นหาคำอธิบายสั้น ๆ และตัวอย่างของพวกเขาทั้งหมดตะโกน
เรียกใช้ wishlist --help
เพื่อดูตัวเลือกทั้งหมด
คุณสามารถกำหนดค่า Wishlist เพื่อค้นหาโหนดทั้งหมดใน tailnet ของคุณและเพิ่มเป็นจุดสิ้นสุด:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
คุณสามารถใช้คำแนะนำเพื่อเปลี่ยนการตั้งค่าการเชื่อมต่อ
ปุ่ม Tailscale 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
Wishlist จะค้นหาบริการ _ssh._tcp
ในโดเมนที่กำหนด
คุณสามารถใช้คำแนะนำเพื่อเปลี่ยนการตั้งค่าการเชื่อมต่อ
คุณสามารถตั้งค่าสิ่งที่อยากได้เพื่อค้นหาโหนดจาก DNS SRV
Records:
wishlist --srv.domain example.com
โดยค่าเริ่มต้น WishList จะตั้งชื่อของจุดสิ้นสุดเป็นเป้าหมาย SRV
อย่างไรก็ตามคุณสามารถปรับแต่งได้ด้วยบันทึก TXT
ในรูปแบบต่อไปนี้:
wishlist.name full.address:22=thename
ดังนั้นในกรณีนี้บันทึก SRV
ที่ชี้ไปที่ full.address
บนพอร์ต 22
จะได้รับชื่อ thename
คุณสามารถใช้คีย์ hints
ในไฟล์การกำหนดค่า YAML เพื่อการตั้งค่าคำแนะนำในจุดสิ้นสุดที่ค้นพบ
ตรวจสอบไฟล์การกำหนดค่าตัวอย่างเพื่อเรียนรู้ว่ามีตัวเลือกใดบ้าง
หากคุณใช้ไฟล์การกำหนดค่า SSH เป็นไฟล์การกำหนดค่า Wishlist มันจะพยายามจับคู่โฮสต์กับกฎในการกำหนดค่าที่กำหนด มิฉะนั้นบริการจะถูกเพิ่มลงในรายการ
ความแตกต่างคือถ้าคำใบ้ของตัวเองจะไม่แสดงใน TUI เช่นเดียวกับโฮสต์ในการกำหนดค่า SSH
Wishlist จะอ่านและจัดเก็บข้อมูลทั้งหมดในโฟลเดอร์ .wishlist
ในไดเรกทอรีการทำงานปัจจุบัน:
ไฟล์กำหนดค่าอาจมีให้ในรูปแบบการกำหนดค่า YAML หรือ SSH:
ไฟล์กำหนดค่าจะถูกลองตามลำดับต่อไปนี้:
-config
ในรูปแบบการกำหนดค่า YAML หรือ 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
คนแรกที่โหลดและแยกวิเคราะห์โดยไม่มีข้อผิดพลาดจะถูกใช้ ซึ่งหมายความว่าหากคุณมีโฮสต์ที่ใช้แล้วทั่วไปใน ~/.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 จำนวนมาก
เราชอบที่จะได้ยินความคิดของคุณเกี่ยวกับโครงการนี้ อย่าลังเลที่จะส่งข้อความถึงเรา!
มิกซ์
ส่วนหนึ่งของเสน่ห์
เสน่ห์热爱开源•เสน่ห์ชอบโอเพ่นซอร์ส
เช่น [[user config dir]]
: $HOME/.config
ระบบ Unix มันจะเป็น $XDG_CONFIG_HOME
ตามที่ระบุโดย https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html $HOME/.config
ในดาร์วินมันจะเป็น $HOME/Library/Application Support
บน Windows มันจะเป็น %AppData%
ในแผน 9 มันจะเป็น $home/lib
↩ 2 ↩ 3