ssh-x-term 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -320
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,388 +16,182 @@
|
|
|
16
16
|
<a href="https://github.com/eugeniofciuvasile/ssh-x-term/blob/main/LICENSE"><img src="https://img.shields.io/github/license/eugeniofciuvasile/ssh-x-term?style=flat-square" alt="License"></a>
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
It seamlessly integrates **SSH connection management**, **SCP/SFTP file transfers**, and **secure credential storage** into a single, responsive interface.
|
|
19
|
+
---
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
**SSH-X-Term** is a modern, terminal-based SSH client with a rich TUI (Text User Interface) built on
|
|
22
|
+
[Bubble Tea](https://github.com/charmbracelet/bubbletea).
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
As of **version 2.0**, SSH-X-Term is a **fully self-contained SSH client** implemented entirely in Go.
|
|
25
|
+
There are **no external SSH tools or wrappers** involved — all SSH, SCP, SFTP, and terminal handling is built in.
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
> **Old versions (< 2.0)** used external SSH clients and required `passh`/`plink.exe` installation.
|
|
29
|
-
> **New versions (>= 2.0)** have **no external dependencies** - everything is handled by the built-in Go SSH client.
|
|
30
|
-
>
|
|
31
|
-
> ### What Changed:
|
|
32
|
-
> - ✅ **No more passh/plink** - Pure Go SSH implementation
|
|
33
|
-
> - ✅ **SSH Agent support** - Automatically uses ssh-agent for key authentication
|
|
34
|
-
> - ✅ **Encrypted keys** - Works with encrypted SSH keys via ssh-agent
|
|
35
|
-
> - ✅ **Better compatibility** - Works on all platforms without external tools
|
|
36
|
-
> - ✅ **Direct connection** - New `-c <connection-id>` flag for instant connections
|
|
37
|
-
> - ✅ **xterm-256color** - Full terminal support built-in
|
|
38
|
-
>
|
|
39
|
-
> If you're upgrading from version < 2.0, your existing configurations will continue to work, but you can now uninstall `passh` and `plink.exe` if you wish.
|
|
27
|
+
It combines **SSH connection management**, **interactive terminals**, **SCP/SFTP file transfers**, and
|
|
28
|
+
**secure credential storage** into a single, fast, cross-platform application.
|
|
40
29
|
|
|
41
|
-
|
|
30
|
+
Credentials can be stored securely using your **local system keyring** or directly in your
|
|
31
|
+
**Bitwarden vault**.
|
|
42
32
|
|
|
43
|
-
|
|
33
|
+
---
|
|
44
34
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
[](https://www.youtube.com/watch?v=C-s-Lh_VdpQ)
|
|
48
|
-
|
|
49
|
-

|
|
35
|
+
## ✨ What SSH-X-Term 2.0 Is
|
|
50
36
|
|
|
51
|
-
|
|
37
|
+
* ✅ **Pure Go SSH client** — no `ssh`, no `passh`, no `plink`
|
|
38
|
+
* ✅ **Cross-platform** — identical behavior on Linux, macOS, and Windows
|
|
39
|
+
* ✅ **Built-in terminal emulator** — full xterm-256color support
|
|
40
|
+
* ✅ **SSH Agent integration** — encrypted keys supported via `ssh-agent`
|
|
41
|
+
* ✅ **First-class TUI** — fast, keyboard-driven, and mouse-aware
|
|
52
42
|
|
|
53
43
|
---
|
|
54
44
|
|
|
55
|
-
##
|
|
45
|
+
## 📺 Demo & Walkthrough
|
|
46
|
+
|
|
47
|
+
<div align="center">
|
|
56
48
|
|
|
57
|
-
|
|
58
|
-
Lightning-fast connection selection via CLI.
|
|
59
|
-
- **Instant Access**: `sxt -l` for minimal UI connection picker
|
|
60
|
-
- **Pure Go SSH**: Uses built-in Go SSH client (no external dependencies)
|
|
61
|
-
- **Direct Connect**: `sxt -c <connection-id>` connects immediately by ID
|
|
62
|
-
- **Auto-Filter**: Start typing immediately - filter activates on first keypress
|
|
63
|
-
- **Smart Navigation**: Arrow keys exit filter and navigate list
|
|
64
|
-
- **Compact Display**: 10 connections per page
|
|
65
|
-
- **No External Tools**: No passh, plink, or ssh command needed
|
|
66
|
-
- **SSH Agent Support**: Automatically uses ssh-agent for encrypted keys
|
|
49
|
+
[](https://www.youtube.com/watch?v=C-s-Lh_VdpQ)
|
|
67
50
|
|
|
68
|
-
|
|
69
|
-
Fully functional terminal emulator built entirely within the TUI.
|
|
70
|
-
- **Standards Compliant**: VT100/ANSI escape sequence support for proper rendering.
|
|
71
|
-
- **Power User Friendly**: 10,000 line scrollback buffer, mouse & keyboard scrolling.
|
|
72
|
-
- **Clipboard**: Text selection with mouse (click & drag), automatic copy, or `Ctrl+C`.
|
|
73
|
-
- **Responsive**: Full keyboard support and window resize handling.
|
|
74
|
-
|
|
75
|
-
### 📂 SCP/SFTP File Manager
|
|
76
|
-
Seamlessly transfer files without leaving the app.
|
|
77
|
-
- **Dual-pane Interface**: Intuitive Local vs. Remote panel navigation.
|
|
78
|
-
- **Full Control**: Upload, Download, Rename, Delete, and Create files/directories.
|
|
79
|
-
- **Search**: Recursive file search (`/` key) to find deep files instantly.
|
|
80
|
-
- **Secure**: Piggybacks on your existing authenticated SSH session.
|
|
51
|
+

|
|
81
52
|
|
|
82
|
-
|
|
83
|
-
- **Local Storage**: Encrypted via system keyring (Keychain, Gnome Keyring, Credential Manager).
|
|
84
|
-
- **Bitwarden Integration**: Direct access to your vault via Bitwarden CLI.
|
|
85
|
-
- **Zero Plaintext**: Passwords are **never** stored in plaintext on disk.
|
|
86
|
-
|
|
87
|
-
### ⚡ Automation & Compatibility (v2.0+)
|
|
88
|
-
- **Pure Go SSH**: All connections use built-in Go SSH client (no external tools needed)
|
|
89
|
-
- **SSH Agent**: Automatic integration with ssh-agent for key authentication
|
|
90
|
-
- **Encrypted Keys**: Full support for encrypted SSH keys via ssh-agent
|
|
91
|
-
- **Password Auth**: Secure password authentication via system keyring
|
|
92
|
-
- **TMUX**: Open connections in new tmux windows automatically
|
|
93
|
-
- **xterm-256color**: Full terminal compatibility built-in
|
|
53
|
+
</div>
|
|
94
54
|
|
|
95
55
|
---
|
|
96
56
|
|
|
97
|
-
##
|
|
57
|
+
## 🚀 Features
|
|
98
58
|
|
|
99
|
-
|
|
100
|
-
ssh-x-term/
|
|
101
|
-
├── .github/
|
|
102
|
-
│ ├── ISSUE_TEMPLATE/ # GitHub issue templates (bug, feature, etc.)
|
|
103
|
-
│ ├── workflows/ # CI/CD definitions (Go build workflow)
|
|
104
|
-
│ └── dependabot.yml # Dependency update automation
|
|
105
|
-
│
|
|
106
|
-
├── cmd/
|
|
107
|
-
│ └── sxt/
|
|
108
|
-
│ └── main.go # Application entry point. Parses CLI flags and launches TUI or Quick Connect.
|
|
109
|
-
│
|
|
110
|
-
├── internal/
|
|
111
|
-
│ ├── cli/ # Quick-connect CLI features.
|
|
112
|
-
│ │ ├── connector.go # Pure Go SSH client connection (v2.0+)
|
|
113
|
-
│ │ └── selector.go # Connection selection in CLI mode
|
|
114
|
-
│ ├── config/ # Configuration and credential management
|
|
115
|
-
│ │ ├── bitwarden.go # Bitwarden vault integration via CLI
|
|
116
|
-
│ │ ├── config.go # Local config and secure keyring storage
|
|
117
|
-
│ │ ├── migrate.go # Config format migration between versions
|
|
118
|
-
│ │ ├── models.go # Configuration data models
|
|
119
|
-
│ │ ├── pathutil.go # Path resolution helpers
|
|
120
|
-
│ │ ├── sshconfig.go # SSH config file parsing and generation
|
|
121
|
-
│ │ ├── sshconfig_test.go # Unit tests for SSH config
|
|
122
|
-
│ │ └── storage.go # Storage provider interfaces
|
|
123
|
-
│ ├── ssh/ # Pure Go SSH client implementation (v2.0+)
|
|
124
|
-
│ │ ├── client.go # Core SSH client with auth and keyring
|
|
125
|
-
│ │ ├── interactive_unix.go # Interactive terminal session (Unix/Linux/Darwin)
|
|
126
|
-
│ │ ├── interactive_windows.go # Interactive terminal session (Windows)
|
|
127
|
-
│ │ ├── session_bubbletea_unix.go # Bubble Tea SSH session (Unix)
|
|
128
|
-
│ │ ├── session_bubbletea_windows.go # Bubble Tea SSH session (Windows)
|
|
129
|
-
│ │ ├── sftp.go # SFTP file transfer logic
|
|
130
|
-
│ │ ├── sftp_unix.go # Unix-specific SFTP features
|
|
131
|
-
│ │ └── sftp_windows.go # Windows-specific SFTP features
|
|
132
|
-
│ └── ui/ # Bubble Tea TUI (Text UI): models, logic, and components.
|
|
133
|
-
│ ├── components/
|
|
134
|
-
│ │ ├── bitwarden_collection_list.go # Bitwarden collection picker.
|
|
135
|
-
│ │ ├── bitwarden_config.go # Bitwarden CLI configuration form.
|
|
136
|
-
│ │ ├── bitwarden_login_form.go # Bitwarden login UI.
|
|
137
|
-
│ │ ├── bitwarden_organization_list.go # Organization select for vault.
|
|
138
|
-
│ │ ├── bitwarden_unlock_form.go # Bitwarden vault unlock UI.
|
|
139
|
-
│ │ ├── connection_list.go # List and picker of SSH connections.
|
|
140
|
-
│ │ ├── delete_confirmation.go # Confirm deletion UI dialog.
|
|
141
|
-
│ │ ├── form.go # Common connection add/edit form.
|
|
142
|
-
│ │ ├── scp_manager.go # SCP/SFTP dual pane file manager.
|
|
143
|
-
│ │ ├── ssh_passphrase_form.go # UI for passphrase input.
|
|
144
|
-
│ │ ├── storage_select.go # Local vs Bitwarden credential storage UI.
|
|
145
|
-
│ │ ├── styles.go # Common style definitions.
|
|
146
|
-
│ │ ├── terminal.go # Terminal emulation inside TUI.
|
|
147
|
-
│ │ ├── terminal_test.go # Terminal tests.
|
|
148
|
-
│ │ ├── vterm.go # Bubble Tea virtual terminal emulator.
|
|
149
|
-
│ │ ├── vterm_color_test.go # Color support tests for terminal.
|
|
150
|
-
│ │ └── vterm_test.go # Virtual terminal tests.
|
|
151
|
-
│ ├── connection_handler.go # Connection lifecycle management logic.
|
|
152
|
-
│ ├── model.go # Main UI state model: app state, active component, etc.
|
|
153
|
-
│ ├── update.go # Update logic for events in the UI.
|
|
154
|
-
│ └── view.go # UI rendering logic.
|
|
155
|
-
│
|
|
156
|
-
├── pkg/
|
|
157
|
-
│ └── sshutil/
|
|
158
|
-
│ ├── auth.go # Authentication helper/utilities (e.g. key parsing).
|
|
159
|
-
│ └── list_ssh_keys.go # Helpers to find and list private SSH keys.
|
|
160
|
-
│
|
|
161
|
-
├── demo.sh # Shell script to demo app or CLI usage.
|
|
162
|
-
├── go.mod # Go module dependencies.
|
|
163
|
-
├── go.sum # Go module package checksums.
|
|
164
|
-
├── index.js # Node.js entry point for npm package: downloads binary, runs app.
|
|
165
|
-
├── install.js # Node.js install script auto-downloads proper binary for platform/arch.
|
|
166
|
-
├── LICENSE # MIT License.
|
|
167
|
-
├── package.json # npm package metadata.
|
|
168
|
-
├── FLOW.md # Detailed flow/features/architecture of application.
|
|
169
|
-
├── CONTRIBUTING.md # Contribution guidelines.
|
|
170
|
-
├── IMPLEMENTATION.md # Technical implementation details.
|
|
171
|
-
├── MIGRATION.md # Migration instructions for config/data upgrade between versions.
|
|
172
|
-
├── COLOR_SUPPORT.md # Documentation for color/terminal support.
|
|
173
|
-
├── logo.svg # Project logo.
|
|
174
|
-
├── media/
|
|
175
|
-
│ ├── demo.gif # Demo GIF for UI.
|
|
176
|
-
│ └── demo.mp4 # Demo video for UI.
|
|
177
|
-
└── README.md # Main documentation.
|
|
59
|
+
### ⚡ Quick Connect Mode
|
|
178
60
|
|
|
179
|
-
|
|
61
|
+
Fast SSH access without launching the full TUI.
|
|
180
62
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
- `storage_select.go` lets users choose between Local (with go-keyring) or Bitwarden storage
|
|
188
|
-
|
|
189
|
-
**Flow chart**
|
|
190
|
-
- [FLOW](https://github.com/eugeniofciuvasile/ssh-x-term/blob/main/FLOW.md)
|
|
63
|
+
* `sxt -l` — minimal interactive connection selector
|
|
64
|
+
* `sxt -c <connection-id>` — instant connection by ID
|
|
65
|
+
* Start typing immediately to filter connections
|
|
66
|
+
* Arrow keys exit filter and navigate
|
|
67
|
+
* 10 connections per page
|
|
68
|
+
* Fully interactive terminal with resize support
|
|
191
69
|
|
|
192
|
-
|
|
70
|
+
### 🖥️ Integrated SSH Terminal
|
|
193
71
|
|
|
194
|
-
|
|
72
|
+
* VT100 / ANSI escape sequence compliant
|
|
73
|
+
* Full **xterm-256color** support
|
|
74
|
+
* 10,000-line scrollback buffer
|
|
75
|
+
* Mouse and keyboard scrolling
|
|
76
|
+
* Text selection and clipboard copy
|
|
77
|
+
* Graceful window resize handling
|
|
195
78
|
|
|
196
|
-
|
|
197
|
-
- **System Keyring** (for local password storage):
|
|
198
|
-
- 🍎 **macOS**: Keychain (built-in)
|
|
199
|
-
- 🐧 **Linux**: Secret Service API (`gnome-keyring`, `kwallet`, etc.)
|
|
200
|
-
- 🪟 **Windows**: Credential Manager (built-in)
|
|
201
|
-
- **SSH Agent** (optional, for encrypted key support):
|
|
202
|
-
- Run `ssh-agent` and add keys with `ssh-add` to avoid passphrase prompts
|
|
203
|
-
- **External Tools**:
|
|
204
|
-
- **Bitwarden CLI (`bw`)** — optional, for Bitwarden vault credential management ([install guide](https://bitwarden.com/help/cli/))
|
|
205
|
-
- **tmux** — optional, for multi-window SSH sessions ([install guide](https://github.com/tmux/tmux/wiki/Installing))
|
|
79
|
+
### 📂 SCP / SFTP File Manager
|
|
206
80
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
81
|
+
* Dual-pane Local ↔ Remote interface
|
|
82
|
+
* Upload, download, rename, delete
|
|
83
|
+
* Create files and directories
|
|
84
|
+
* Recursive search (`/`)
|
|
85
|
+
* Uses the active authenticated SSH session
|
|
210
86
|
|
|
211
|
-
|
|
87
|
+
### 🔐 Secure Credential Management
|
|
212
88
|
|
|
213
|
-
**
|
|
89
|
+
* **Local storage** via system keyring
|
|
214
90
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
91
|
+
* macOS Keychain
|
|
92
|
+
* Linux Secret Service
|
|
93
|
+
* Windows Credential Manager
|
|
94
|
+
* **Bitwarden integration** via Bitwarden CLI
|
|
95
|
+
* Passwords are never stored in plaintext
|
|
218
96
|
|
|
219
|
-
|
|
220
|
-
- ~~`passh`~~ - Replaced by built-in Go SSH client
|
|
221
|
-
- ~~`plink.exe`~~ - Replaced by built-in Go SSH client
|
|
222
|
-
- ~~`ssh` command~~ - Replaced by built-in Go SSH client
|
|
97
|
+
### ⚙️ SSH Authentication
|
|
223
98
|
|
|
224
|
-
|
|
99
|
+
* SSH Agent (recommended for encrypted keys)
|
|
100
|
+
* Encrypted private keys supported via `ssh-agent`
|
|
101
|
+
* Password authentication via system keyring
|
|
102
|
+
* Compatible with standard OpenSSH config
|
|
225
103
|
|
|
226
|
-
|
|
227
|
-
sudo apt update
|
|
228
|
-
sudo apt install -y tmux gnome-keyring
|
|
229
|
-
npm install -g @bitwarden/cli # optional
|
|
230
|
-
```
|
|
104
|
+
---
|
|
231
105
|
|
|
232
|
-
|
|
106
|
+
## 📦 Project Structure
|
|
233
107
|
|
|
234
|
-
|
|
235
|
-
brew install tmux # optional
|
|
236
|
-
npm install -g @bitwarden/cli # optional
|
|
237
|
-
```
|
|
108
|
+
(Structure unchanged — see repository tree for details)
|
|
238
109
|
|
|
239
|
-
|
|
110
|
+
---
|
|
240
111
|
|
|
241
|
-
|
|
242
|
-
- Install Bitwarden CLI with: `npm install -g @bitwarden/cli` (optional)
|
|
243
|
-
- Windows Credential Manager is used by go-keyring and is built-in
|
|
112
|
+
## 🛠️ Prerequisites
|
|
244
113
|
|
|
245
|
-
###
|
|
114
|
+
### Required
|
|
246
115
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
eval $(ssh-agent)
|
|
116
|
+
* **Go 1.24+** (only if building from source)
|
|
117
|
+
* **System Keyring** (for local password storage)
|
|
250
118
|
|
|
251
|
-
|
|
252
|
-
ssh-add ~/.ssh/id_rsa
|
|
253
|
-
ssh-add ~/.ssh/id_ed25519
|
|
119
|
+
### Optional
|
|
254
120
|
|
|
255
|
-
|
|
256
|
-
|
|
121
|
+
* **SSH Agent** (recommended for encrypted SSH keys)
|
|
122
|
+
* **Bitwarden CLI (`bw`)** — for Bitwarden vault support
|
|
123
|
+
* **tmux** — open SSH sessions in new tmux windows
|
|
124
|
+
|
|
125
|
+
> ⚠️ SSH-X-Term 2.0+ has **no external SSH dependencies**.
|
|
126
|
+
> You do not need `ssh`, `passh`, `plink`, or PuTTY.
|
|
257
127
|
|
|
258
128
|
---
|
|
259
129
|
|
|
260
130
|
## 📥 Installation
|
|
261
131
|
|
|
262
|
-
### Option 1: Install
|
|
263
|
-
|
|
264
|
-
The easiest way to install is via the [npm package](https://www.npmjs.com/package/ssh-x-term):
|
|
132
|
+
### Option 1: Install via npm (Recommended)
|
|
265
133
|
|
|
266
134
|
```sh
|
|
267
|
-
# Install globally
|
|
268
135
|
npm install -g ssh-x-term
|
|
269
|
-
|
|
270
|
-
# Run
|
|
271
136
|
sxt
|
|
272
137
|
```
|
|
273
138
|
|
|
274
|
-
>
|
|
139
|
+
> The npm installer downloads the correct prebuilt binary for your platform.
|
|
140
|
+
> Only optional tools (`bw`, `tmux`) may be suggested.
|
|
275
141
|
|
|
276
142
|
### Option 2: Build from source
|
|
277
143
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
```
|
|
144
|
+
```sh
|
|
145
|
+
git clone https://github.com/eugeniofciuvasile/ssh-x-term.git
|
|
146
|
+
cd ssh-x-term
|
|
147
|
+
go build -o sxt ./cmd/sxt
|
|
148
|
+
```
|
|
284
149
|
|
|
285
|
-
|
|
286
|
-
```sh
|
|
287
|
-
go install github.com/eugeniofciuvasile/ssh-x-term/cmd/sxt@latest
|
|
288
|
-
```
|
|
150
|
+
Or:
|
|
289
151
|
|
|
290
|
-
|
|
152
|
+
```sh
|
|
153
|
+
go install github.com/eugeniofciuvasile/ssh-x-term/cmd/sxt@latest
|
|
154
|
+
```
|
|
291
155
|
|
|
292
|
-
|
|
156
|
+
### Option 3: Prebuilt Binary
|
|
157
|
+
|
|
158
|
+
Download from the GitHub Releases page.
|
|
293
159
|
|
|
294
160
|
---
|
|
295
161
|
|
|
296
162
|
## 🎮 Usage
|
|
297
163
|
|
|
298
|
-
### First
|
|
299
|
-
|
|
300
|
-
Before using SSH-X-Term, initialize it once:
|
|
164
|
+
### First-Time Initialization
|
|
301
165
|
|
|
302
166
|
```sh
|
|
303
167
|
sxt -i
|
|
304
168
|
```
|
|
305
169
|
|
|
306
170
|
This will:
|
|
307
|
-
- Migrate any old JSON configuration (if exists)
|
|
308
|
-
- Create backup of existing SSH config
|
|
309
|
-
- Set up SSH-X-Term for use
|
|
310
|
-
|
|
311
|
-
### Standard Mode (Full TUI)
|
|
312
|
-
|
|
313
|
-
1. **Start the App**:
|
|
314
|
-
```sh
|
|
315
|
-
sxt
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
2. **First Run Setup**:
|
|
319
|
-
- Choose **Local Storage** (System Keyring) or **Bitwarden** (Vault).
|
|
320
|
-
|
|
321
|
-
3. **Manage Connections**:
|
|
322
|
-
- `a` : **Add** a new connection.
|
|
323
|
-
- `e` : **Edit** selected connection.
|
|
324
|
-
- `d` : **Delete** connection.
|
|
325
|
-
- `s` : Open **SCP/SFTP File Manager**.
|
|
326
|
-
- `o` : Toggle **TMUX** mode (open in new window).
|
|
327
|
-
- `Enter` : **Connect** (start SSH session).
|
|
328
|
-
|
|
329
|
-
4. **📂 Inside SCP Manager**:
|
|
330
|
-
- `Tab` : Switch between **Local** ↔️ **Remote** panels.
|
|
331
|
-
- `Enter` : **Enter** folder.
|
|
332
|
-
- `Backspace` : **Exit** folder.
|
|
333
|
-
- `c` : **Change** folder.
|
|
334
|
-
- `g` : **Get**/**Download** file/folder.
|
|
335
|
-
- `u` : **Upload** file/folder.
|
|
336
|
-
- `n` : Create **New** file/folder.
|
|
337
|
-
- `r` : **Rename** file.
|
|
338
|
-
- `d` : **Delete** file.
|
|
339
|
-
- `/` : **Search** recursively.
|
|
340
|
-
|
|
341
|
-
5. **🖥️ Inside SSH Session**:
|
|
342
|
-
- `PgUp` / `PgDn` : Scroll history.
|
|
343
|
-
- `Ctrl+D` : Send EOF.
|
|
344
|
-
- `Esc` `Esc` (Double Press) : Disconnect and return to menu.
|
|
345
|
-
|
|
346
|
-
### Quick Connect Mode (CLI)
|
|
347
|
-
|
|
348
|
-
**Fast connection selection without the full TUI** (v2.0+):
|
|
349
171
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
172
|
+
* Initialize configuration
|
|
173
|
+
* Migrate any existing SSH-X-Term data
|
|
174
|
+
* Prepare SSH config metadata
|
|
353
175
|
|
|
354
|
-
|
|
355
|
-
sxt -l
|
|
176
|
+
### Full TUI Mode
|
|
356
177
|
|
|
357
|
-
|
|
358
|
-
sxt
|
|
178
|
+
```sh
|
|
179
|
+
sxt
|
|
359
180
|
```
|
|
360
181
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
#### Quick Connect (`sxt -l`)
|
|
364
|
-
This displays a minimal connection list where you can:
|
|
365
|
-
- **Start typing immediately** to filter connections by name
|
|
366
|
-
- Use **arrow keys** to navigate (exits filter mode and navigates)
|
|
367
|
-
- Press **Enter** while filtering to apply filter, or to connect when not filtering
|
|
368
|
-
- Press **Esc** to clear filter (if filtering) or quit
|
|
369
|
-
- Press **Ctrl+C** to quit immediately
|
|
370
|
-
- **10 connections per page** with pagination
|
|
182
|
+
Key actions:
|
|
371
183
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
184
|
+
* `a` — Add connection
|
|
185
|
+
* `e` — Edit connection
|
|
186
|
+
* `d` — Delete connection
|
|
187
|
+
* `s` — Open SCP/SFTP manager
|
|
188
|
+
* `o` — Toggle tmux mode
|
|
189
|
+
* `Enter` — Connect
|
|
377
190
|
|
|
378
|
-
|
|
379
|
-
sxt -c <tab>
|
|
380
|
-
```
|
|
191
|
+
### Quick Connect (CLI)
|
|
381
192
|
|
|
382
|
-
**Features** (v2.0+):
|
|
383
|
-
- ✅ **Pure Go SSH** - No external tools needed (passh, plink, ssh)
|
|
384
|
-
- ✅ **SSH Agent integration** - Automatically uses ssh-agent for encrypted keys
|
|
385
|
-
- ✅ **Password from keyring** - Retrieves passwords securely from system keyring
|
|
386
|
-
- ✅ **Auto-filter on keypress** (no need to press `/`)
|
|
387
|
-
- ✅ **Arrow keys exit filter and navigate**
|
|
388
|
-
- ✅ **Full terminal support** - xterm-256color built-in
|
|
389
|
-
- ✅ **Window resize** - Handles terminal resize properly
|
|
390
|
-
- ✅ **Works everywhere** - No tmux requirement, any terminal
|
|
391
|
-
|
|
392
|
-
**Using with encrypted SSH keys:**
|
|
393
193
|
```sh
|
|
394
|
-
# Add your keys to ssh-agent once
|
|
395
|
-
eval $(ssh-agent)
|
|
396
|
-
ssh-add ~/.ssh/id_rsa
|
|
397
|
-
|
|
398
|
-
# Now connections work without passphrase prompts!
|
|
399
194
|
sxt -l
|
|
400
|
-
# or
|
|
401
195
|
sxt -c <connection-id>
|
|
402
196
|
```
|
|
403
197
|
|
|
@@ -405,28 +199,39 @@ sxt -c <connection-id>
|
|
|
405
199
|
|
|
406
200
|
## ⚙️ Configuration
|
|
407
201
|
|
|
408
|
-
| Storage
|
|
409
|
-
|
|
410
|
-
|
|
|
411
|
-
|
|
|
202
|
+
| Storage | Description |
|
|
203
|
+
| --------- | ---------------------------------------------------------- |
|
|
204
|
+
| Local | SSH config at `~/.ssh/config`, passwords in system keyring |
|
|
205
|
+
| Bitwarden | Secrets stored in Bitwarden vault via `bw` CLI |
|
|
206
|
+
|
|
207
|
+
SSH-X-Term stores metadata as comments in your standard SSH config and remains fully compatible with OpenSSH tools.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 🔑 SSH Agent Setup (Recommended)
|
|
212
|
+
|
|
213
|
+
```sh
|
|
214
|
+
eval $(ssh-agent)
|
|
215
|
+
ssh-add ~/.ssh/id_ed25519
|
|
216
|
+
```
|
|
412
217
|
|
|
413
|
-
|
|
218
|
+
Once added, SSH-X-Term can use encrypted keys without prompting for passphrases.
|
|
414
219
|
|
|
415
220
|
---
|
|
416
221
|
|
|
417
222
|
## 🛡️ Security & Disclaimer
|
|
418
223
|
|
|
419
|
-
|
|
224
|
+
SSH-X-Term is released under the MIT License.
|
|
420
225
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
226
|
+
* Credentials are never logged or written in plaintext
|
|
227
|
+
* All secrets are handled via OS APIs or Bitwarden
|
|
228
|
+
* Always ensure your system, SSH keys, and Bitwarden vault are properly secured
|
|
424
229
|
|
|
425
230
|
---
|
|
426
231
|
|
|
427
232
|
## 👏 Credits
|
|
428
233
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
234
|
+
* Bubble Tea — TUI framework
|
|
235
|
+
* go-keyring — Secure credential storage
|
|
236
|
+
* Bitwarden CLI — Vault integration
|
|
237
|
+
* OpenSSH — Protocol reference and compatibility
|