دليل SSH
مع قائمة الرغبات ، يمكنك الحصول على نقطة إدخال واحدة لنقاط نهاية SSH متعددة ، سواء كانت تطبيقات Wish أم لا.
كخادم ، يمكن استخدامه لبدء تطبيقات SSH متعددة داخل حزمة واحدة وإدراجها على SSH. يمكنك سرد التطبيقات المقدمة في مكان آخر أيضًا.
يمكنك أيضًا استخدام أمر wishlist
لإدراج الخوادم والاتصال بها في ~/.ssh/config
أو في ملف تكوين YAML.
استخدم مدير الحزمة FAVE:
# 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
لاحظ أنه لا يتم دعم جميع الخيارات في هذه اللحظة. تحقق من مثال تم تعليقه للرجوع إليه.
تتوفر قائمة Wishlist أيضًا كمكتبة ، والتي تتيح لك بدء العديد من التطبيقات في نفس العملية. تحقق من مجلد _example
للحصول على مثال عمل.
عند التشغيل في الوضع المحلي ، سترى قائمة Wishlist أولاً ما إذا كانت نقطة النهاية الحالية تحتوي على ملف IdentityFile
محدد. إذا كان الأمر كذلك ، فسيحاول استخدام ذلك. إذا لم يكن الأمر كذلك ، فسترى ما إذا كان هناك وكيل SSH متاح ، واستخدامه. خلاف ذلك ، سيحاول أسماء المفاتيح الشائعة في ~/.ssh
.
عند التشغيل كخادم ، ستحاول قائمة الرغبات أولاً إعادة توجيه وكيل 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
لرؤية جميع الخيارات.
يمكنك تكوين قائمة الأمنيات للعثور على جميع العقد في Tailnet الخاص بك وإضافتها كنقاط نهاية:
wishlist --tailscale.net=your_tailnet_name --tailscale.key=tskey-api-abc123...
يمكنك استخدام التلميحات لتغيير إعدادات الاتصال.
تنتهي مفاتيح API Tailscale بعد 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
بشكل افتراضي ، ستقوم قائمة Wishlist بتعيين اسم نقطة النهاية على هدف SRV
. ومع ذلك ، يمكنك تخصيص ذلك من خلال سجل TXT
بالتنسيق التالي:
wishlist.name full.address:22=thename
لذلك ، في هذه الحالة ، سيحصل سجل SRV
الذي يشير إلى full.address
على المنفذ 22
على اسم thename
.
يمكنك استخدام مفتاح hints
في ملف تكوين YAML لتلميح الإعدادات في نقاط النهاية المكتشفة.
تحقق من ملف تكوين المثال لمعرفة الخيارات المتاحة.
إذا كنت تستخدم ملف تكوين SSH كملف تكوين قائمة الأمنيات ، فسوف يحاول مطابقة المضيفين مع القواعد في التكوين المحدد. خلاف ذلك ، ستتم إضافة الخدمات ببساطة إلى القائمة.
الفرق هو أنه إذا لم تظهر تلميحات نفسها في TUI ، فستكون المضيفين في تكوين SSH.
ستقرأ قائمة الأمنيات وتخزين جميع معلوماتها في مجلد .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.
نود أن نسمع أفكارك حول هذا المشروع. لا تتردد في إسقاطنا ملاحظة!
معهد ماساتشوستس للتكنولوجيا
جزء من السحر.
سحر 热爱开源 • السحر يحب المصدر المفتوح
IE [[user config dir]]
: على أنظمة UNIX ، سيكون $XDG_CONFIG_HOME
كما هو محدد بواسطة https://specifications.freedesktop.org/basedir-spec/based-spec-latest.html if nonpty ، $HOME/.config
. في داروين ، سيكون $HOME/Library/Application Support
. على Windows ، سيكون %AppData%
. في الخطة 9 ، سيكون $home/lib
. ↩ ↩ 2 ↩ 3