
TUI के साथ उन्नत SSH क्लाइंट — कनेक्शन, कुंजियाँ और सत्र प्रबंधित करें
<h1 align="center">ESSH</h1>
<p align="center">
<strong>स्थायी सत्रों और लाइव हेल्थ डैशबोर्ड के साथ एक SSH वर्कस्पेस।</strong>
</p>
<p align="center">
<a href="https://github.com/matthart1983/essh/releases/latest"><img src="https://img.shields.io/github/v/release/matthart1983/essh" alt="Latest release"></a>
<a href="https://github.com/matthart1983/essh/releases"><img src="https://img.shields.io/github/downloads/matthart1983/essh/total" alt="Release downloads"></a>
<a href="https://github.com/matthart1983/essh/actions/workflows/ci.yml"><img src="https://github.com/matthart1983/essh/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI status"></a>
<a href="#install"><img src="https://img.shields.io/badge/platform-macOS%20%7C%20Linux-blue" alt="Platforms: macOS and Linux"></a>
<a href="https://github.com/matthart1983/essh/releases/latest"><img src="https://img.shields.io/badge/architecture-x86__64%20%7C%20ARM64-blue" alt="Architectures: x86_64 and ARM64"></a>
<a href="https://github.com/matthart1983/essh/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT"></a>
</p>
कनेक्शन टूटने पर भी रिमोट शेल चालू रखें, कीबोर्ड या माउस से होस्ट के बीच स्विच करें, और अपना टर्मिनल छोड़े बिना सिस्टम हेल्थ जांचें।
ESSH कनेक्शन के लिए OpenSSH और आपके काम को जीवित रखने के लिए tmux का उपयोग करता है।
## इसे क्रिया में देखें
[](https://github.com/matthart1983/essh/releases/download/v0.4.1/essh-v3-demo.mp4)
**[42-सेकंड का डेमो देखें](https://github.com/matthart1983/essh/releases/download/v0.4.1/essh-v3-demo.mp4)** ·
[ब्राउज़र रीप्ले डाउनलोड करें](https://github.com/matthart1983/essh/releases/download/v0.4.1/essh-v3-replay.html)
`df` और `lsblk` से डिस्क जांचें, `ps` से व्यस्त प्रक्रियाएं खोजें, `vmstat` से सिस्टम गतिविधि का नमूना लें, और `ss` और `ip` से सॉकेट और इंटरफेस जांचें।
डेमो टर्मिनल थीम स्विचिंग, साइड, हाफ और फुल हेल्थ व्यू, सत्र स्विचिंग, सहायता, और टूटे कनेक्शन के बाद उसी रिमोट शेल को रिकवर होते दिखाता है।
## इंस्टॉल करें
[Releases](https://github.com/matthart1983/essh/releases/latest) से **Linux या macOS** के लिए, **x86_64 या ARM64** पर एक बाइनरी डाउनलोड करें। आर्काइव को एक्सट्रैक्ट करें और `essh` को अपने `PATH` में कहीं रखें।
आपको **लोकल पर tmux 3.3+ और OpenSSH**, और **प्रत्येक रिमोट होस्ट पर tmux** की आवश्यकता है।
विस्तृत हेल्थ मेट्रिक्स Linux होस्ट के लिए उपलब्ध हैं।
या Rust के साथ सोर्स से बिल्ड करें:
```sh
git clone https://github.com/matthart1983/essh.git
cd essh
cargo build --release
./target/release/essh
```
## होस्ट से कनेक्ट करें
ESSH होस्ट को `~/.ssh/config`, अपने स्वयं के कॉन्फ़िगरेशन, और अपने होस्ट कैश से पढ़ता है।
उदाहरण के लिए:
```sshconfig
Host web-01
HostName 192.168.1.20
User deploy
IdentityFile ~/.ssh/id_ed25519
```
`essh` चलाएं, एक होस्ट चुनें, और **Enter** दबाएं। होस्ट फ़िल्टर करने के लिए **/** का उपयोग करें और फ़िल्टर साफ़ करने के लिए **Esc** दबाएं। होस्ट जोड़ने के लिए **a** या संपादित करने के लिए **e** दबाएं।
OpenSSH प्रमाणीकरण और होस्ट-की जांच संभालता है।
## अपना रास्ता खोजें
| कुंजी | क्रिया |
| --- | --- |
| **F1** | सहायता खोलें या बंद करें |
| **F2** | टर्मिनल → साइड हेल्थ → हाफ हेल्थ → फुल हेल्थ → टर्मिनल चक्रित करें |
| **F3** | Sessions खोलें; एक सत्र चुनें या दूसरा शुरू करने के लिए **n** दबाएं |
| **F4** | सत्र चलते रहते हुए मुख्य मेनू पर वापस जाएं |
| **F5 / F6** | पिछले / अगले सत्र पर स्विच करें |
| होस्ट पर **h** | चयनित होस्ट के लिए हेल्थ खोलें |
| कनेक्शन टूटने के बाद **r** | पुनः कनेक्ट करें |
| होस्ट पर **q** | रिमोट काम चलते रहते हुए ESSH छोड़ें |
व्यू स्विच करने के लिए सत्र टैब और नेविगेशन नियंत्रणों पर क्लिक करें। चुनने के लिए एक पंक्ति पर क्लिक करें; कनेक्ट या स्विच करने के लिए डबल-क्लिक करें। स्क्रॉल करने के लिए माउस व्हील का उपयोग करें, फोकस करने के लिए पैन पर क्लिक करें, और आकार बदलने के लिए डिवाइडर खींचें।
यदि आपका कीबोर्ड फ़ंक्शन पंक्ति का उपयोग चमक या वॉल्यूम के लिए करता है, तो F-कुंजी दबाते समय **Fn** दबाए रखें, या अपनी कीबोर्ड सेटिंग्स में मानक फ़ंक्शन कुंजियां सक्षम करें।
नेविगेशन नियंत्रण भी क्लिक करने योग्य हैं, और **F1** उपलब्ध कुंजियों को सूचीबद्ध करता है।
## आपका शेल और थीम
रिमोट सत्र रिमोट खाते के कॉन्फ़िगर किए गए लॉगिन शेल को शुरू करते हैं और उसकी सामान्य स्टार्टअप फ़ाइलें लोड करते हैं—zsh, bash, fish, या जो भी शेल वह खाता उपयोग करता है।
आपका प्रॉम्प्ट, एलियास और शेल कुंजी बाइंडिंग उस रिमोट खाते से आते हैं।
पुनः कनेक्ट करने पर मौजूदा शेल अपनी चल रही स्थिति बनाए रखते हैं।
ESSH डिफ़ॉल्ट रूप से आपके टर्मिनल के रंगों का उपयोग करता है। शेल के फोरग्राउंड और बैकग्राउंड को डैशबोर्ड के साथ बदलने के लिए एक थीम चुनें:
```sh
essh --theme terminal
essh --theme netwatch
essh --theme light
```
मेनू या हेल्थ व्यू में **t** दबाएं, या शेल से **Ctrl+A**, फिर **t** दबाकर थीम पिकर खोलें। एरो कुंजियां प्रत्येक पैलेट का पूर्वावलोकन करती हैं; **Enter** या क्लिक लागू करता है और सहेजता है। **Esc** आपकी प्राथमिकता बदले बिना रद्द करता है।
**Terminal**, **Netwatch**, **Light**, **Solarized**, **Dracula**, **Nord**, **Ocean**, या **Sky** चुनें। Netwatch सियान हेडिंग और हरे मीटर के साथ चारकोल बैकग्राउंड का उपयोग करता है। चयनित थीम मेनू, हेल्थ व्यू, नेविगेशन बार और टर्मिनल पैन पर लागू होती है। अपने टर्मिनल के मूल रंगों को पुनर्स्थापित करने के लिए **Terminal** चुनें। प्रोग्राम और प्रॉम्प्ट अभी भी अपने स्वयं के रंग सेट कर सकते हैं।
प्राथमिकता सहेजने के लिए, `~/.essh/config.toml` के शीर्ष पर `theme = "terminal"` (या कोई अन्य थीम नाम) सेट करें। इसे खुले वर्कस्पेस पर `essh tmux refresh` के साथ लागू करें; SSH सत्र चलते रहते हैं। आपका टर्मिनल एमुलेटर फ़ॉन्ट और फ़ॉन्ट आकार नियंत्रित करता है।
## अपना हेल्थ व्यू चुनें
चक्रित करने के लिए **F2** दबाएं:
| व्यू | आप क्या देखते हैं |
| --- | --- |
| Terminal | सत्र और नेविगेशन बार के साथ आपका शेल |
| Side health | ट्रैफ़िक, CPU, मेमोरी, डिस्क और लेटेंसी के साथ एक संकीर्ण पट्टी |
| Half health | आपका शेल और टर्मिनल साझा करता एक डैशबोर्ड |
| Full health | नेटवर्क ट्रैफ़िक, CPU कोर, मेमोरी, स्टोरेज, पीयर्स और प्रक्रियाएं |
डैशबोर्ड पतले मीटर और लाइव रीडिंग का उपयोग करते हैं। अनुपलब्ध रीडिंग **—** दिखाती हैं; डिस्कनेक्ट किए गए होस्ट स्पष्ट रूप से चिह्नित होते हैं। संकीर्ण टर्मिनल साइड लेआउट छोड़ देते हैं।
डैशबोर्ड में:
- **Tab** एक पैनल चुनता है; **एरो** और **माउस व्हील** स्क्रॉल करते हैं।
- **i** एक नेटवर्क इंटरफेस चुनता है; **c / m** प्रक्रियाओं को CPU या मेमोरी से क्रमबद्ध करते हैं।
- **Left / Right** होस्ट ब्राउज़ करते हैं, जिनमें कनेक्टेड सत्र के बिना होस्ट भी शामिल हैं।
- **Esc** फुल हेल्थ बंद करता है और पिछला साइड व्यू पुनर्स्थापित करता है।
- फुल हेल्थ से **F2** साइड हेल्थ बंद करके टर्मिनल पर वापस आता है।
सीधे पहुंच के लिए, **Ctrl+A** दबाएं, छोड़ें, फिर फुल हेल्थ के लिए **h** या साइड हेल्थ → हाफ हेल्थ → बंद चक्रित करने के लिए **m** दबाएं।
## सत्रों और पैन में काम करें
एक और स्वतंत्र सत्र खोलने के लिए **F3**, फिर **n** का उपयोग करें। **F5 / F6**, Sessions पिकर, या माउस से स्विच करें। **F4** आपके सत्र समाप्त किए बिना होस्ट सूची पर वापस आता है।
सत्र ID लोकल रीस्टार्ट के बाद भी बनी रहती हैं। पुनः कनेक्ट करने पर रिमोट शेल फिर से जुड़ जाता है जब वह अभी भी मौजूद हो; यदि वह समाप्त हो गया हो, तो ESSH एक नया शेल शुरू करता है। डिस्कनेक्ट किए गए सत्र की रिमोट स्थिति तब तक असत्यापित रहती है जब तक आप पुनः कनेक्ट नहीं करते।
**Ctrl+A** लोकल tmux को नियंत्रित करता है। **Ctrl+B** रिमोट होस्ट पर tmux को नियंत्रित करता है।
प्रीफ़िक्स दबाएं, छोड़ें, फिर अगली कुंजी दबाएं:
| कुंजियां | क्रिया |
| --- | --- |
| **Ctrl+B**, फिर **%** | रिमोट टर्मिनल को साथ-साथ विभाजित करें |
| **Ctrl+B**, फिर **"** | रिमोट टर्मिनल को ऊपर-नीचे विभाजित करें |
| **Ctrl+B**, फिर एक **एरो** | रिमोट पैन के बीच जाएं |
| **Ctrl+A**, फिर **v** | अगली कुंजी सीधे रिमोट एप्लिकेशन को भेजें |
| **Ctrl+A**, फिर **x** | पुष्टि के बाद रिमोट सत्र समाप्त करें |
F1–F6 ESSH के लिए आरक्षित हैं। जब किसी रिमोट एप्लिकेशन को उन कुंजियों में से एक की आवश्यकता हो, तो **Ctrl+A**, फिर **v** का उपयोग करें।
## विकास
```sh
cargo fmt --check
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo build --release
ESSH_BIN=target/release/essh python3 scripts/test-tmux-v3.py
```
लाइव रिग्रेशन जांच एक पृथक SSH सर्वर और tmux सॉकेट का उपयोग करती है।
[डेमो रिकॉर्डिंग और सत्यापन](https://github.com/matthart1983/essh/blob/main/docs/demo-v3.md) बताता है कि टूर को कैसे पुनः उत्पन्न करें।
योगदान देने के लिए, एक ब्रांच बनाएं, अपना बदलाव करें, जांच चलाएं, और एक पुल रिक्वेस्ट खोलें।
## लाइसेंस
[MIT](https://github.com/matthart1983/essh/blob/main/LICENSE)