
essh v0.3.2
عميل SSH محسّن مع واجهة مستخدم نصية (TUI) — إدارة الاتصالات والمفاتيح والجلسات
███████╗███████╗███████╗██╗ ██╗
██╔════╝██╔════╝██╔════╝██║ ██║
█████╗ ███████╗███████╗███████║
██╔══╝ ╚════██║╚════██║██╔══██║
███████╗███████║███████║██║ ██║
╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
Enhanced SSH for people with fleets
عميل SSH مكتوب بلغة Rust بالكامل، بواجهة TUI كثيفة على غرار Netwatch. جلسات متعددة، مقاييس حية للخوادم، وتباين على مستوى الأسطول — دون مغادرة الطرفية.

التثبيت
cargo install essh
أو حمّل بناءً ثنائيًا لنظامي macOS أو Linux، لمعماريتي arm64 أو x86_64، من الإصدارات.
من المصدر:
git clone https://github.com/matthart1983/essh && cd essh
cargo build --release # ./target/release/essh
البدء
essh # launcher: type to search, Enter to connect
essh connect deploy@web-01 # straight to a host
essh workspace open prod # restore a saved set of sessions
essh run web -- uptime # fan a command across a tagged group
تأتي المضيفات من ~/.ssh/config — بما في ذلك IdentityFile وProxyJump وMatch — لذلك لا يوجد شيء لاستيراده قبل البدء.
المفاتيح
كل شيء شائع يتم بضغطة مفتاح واحدة. تحتفظ الصدفة بكل توليفات Ctrl، لذا فـ Ctrl+D ما زالت تعني EOF وCtrl+C ما زالت تقاطع.
F1 مساعدة | F2 مراقب | F3 ملفات | F4 إعادة توجيه المنافذ |
F5 مراقب مصغّر | F6 فصل | F7/F8 الجلسة السابقة/التالية | F9 جلسة جديدة |
F10 قائمة الأوامر |
لأي شيء آخر، اضغط Ctrl+A، ثم اتركه، ثم المفتاح — s تقسيم، w إغلاق، t سمة، 1–9 الانتقال إلى جلسة، [/] تغيير الحجم. الشريط أسفل الجلسة يعرض المفاتيح السارية الآن، لذلك لا يوجد شيء لحفظه. غيّر البادئة بواسطة prefix_key تحت [session].
توليفات Option/Alt تعمل أيضًا عندما يرسلها طرفيتك بصفتها Meta، لكن مفاتيح الوظائف لا تحتاج أي تهيئة وتتصرف بنفس الطريقة على المنصتين.
ماذا يفعل
| جلسات متعددة | تبويبات وتقسيمات في نافذة واحدة، مع تمرير خلفي وإعادة اتصال لكل جلسة. |
| مراقب المضيف الحي | CPU والذاكرة والقرص والشبكة والعمليات الأكثر استهلاكًا، تُؤخذ عيناتها في الخلفية حتى تكون العرض جاهزًا عند فتحه. لا وكيل — قنوات تنفيذ SSH عادية. |
| التباين | يقارن كل مضيف مع مجموعة نظرائه ويخبرك أي مضيف يختلف، وعلى أي جانب، ولماذا. |
| نقل الملفات | متصفّح محلي/بعيد بجزأين عبر SFTP. |
| إعادة توجيه المنافذ | إضافة عمليات إعادة التوجيه وفحصها وإزالتها دون إنهاء الجلسة. |
| التدقيق وإعادة التشغيل | سجل تدقيق JSON منظم؛ تسجَّل الجلسات بصيغة asciicast لإعادة التشغيل. |
التباين
أربعون خادم ويب، تسعة وثلاثون منها سليمة، وواحد بنواة مختلفة أو ملف nginx.conf مُعدَّل يدويًا. عمود من النقاط الخضراء لا يمكنه بنيويًا أن يُريك ذلك.
تجمّع ESSH المضيفات في مجموعات نظراء حسب الوسم، وتجمع الحقائق نفسها من كل منها، وتقيّم كل مضيف مقارنةً بإجماع المجموعة:
100.0% of 16 facet-checks agree
0 facets diverge across 0 hosts.
2 hosts have never been probed, so their facets are unknown rather than in agreement.
تسمّي شاشة Fleet المضيفَ الشاذ والجوانب الكامنة خلف الادعاء، فتكون النتيجة قابلة للتحقق بدلًا من أن تكون مجرد تأكيد. الحقائق التي لا يمكن جمعها تُبلَّغ على أنها غير مجمعة — ولا تُعد أبدًا اتفاقًا.
الإعدادات
الحالة تُخزَّن في ~/.essh/: config.toml، cache.db، audit.log،
sessions/، recordings/، known_cas/.
essh config init # write a default config
essh config edit # open it in $EDITOR
essh config resolve web-01 # show how ssh_config resolves a host
يتم التحقق من مفاتيح المضيفين وتخزينها مؤقتًا، مع سياسة TOFU قابلة للتهيئة
(strict، prompt، auto). يمكن تقييد خوارزميات التشفير وKEX.
المرجع الكامل للإعدادات والبنية: SPEC.md.
واجهة سطر الأوامر
essh hosts list | add | remove | import | health
essh keys list | add | remove
essh workspace list | open | save | show | remove
essh session list | replay <id>
essh diag <session-id> # diagnostics for a past session
essh why <host> # explain why a host will not connect
essh audit tail --lines 20
essh bench # published performance numbers
التطوير
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
تشغّل CI الفحوصات الثلاثة جميعها عند كل دفع.
tests/tui_harness.rs يدفع الثنائي الحقيقي على PTY ويجري تأكيدات على شاشة طرفية محلّلة ضمن مهلة زمنية، لأن الإخفاقات المهمة في TUI هي غياب الإطار لا وجود إطار خاطئ. الاختبارات التي تحتاج SSH تتخطى نفسها عندما لا يكون أي مضيف قابلًا للوصول.
المساهمة
انسخ (Fork) المستودع، أنشئ فرعًا، نفّذ التغيير، شغّل الفحوصات الثلاثة أعلاه، ثم افتح طلب سحب (PR).
الترخيص
MIT. انظر LICENSE.