ssh-x-term 1.0.19 → 1.0.21

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.
Files changed (2) hide show
  1. package/README.md +134 -177
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SSH-X-Term
2
2
 
3
- <p>
3
+ <p align="center">
4
4
  <picture>
5
5
  <source media="(prefers-color-scheme: dark)" srcset="./logo.svg" width="240">
6
6
  <source media="(prefers-color-scheme: light)" srcset="./logo.svg" width="240">
@@ -13,33 +13,56 @@
13
13
  <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>
14
14
  </p>
15
15
 
16
- SSH-X-Term is a powerful terminal-based SSH client with a TUI (Text User Interface) built on [Bubble Tea](https://github.com/charmbracelet/bubbletea).
17
- It lets you manage SSH connections and securely store credentials using either **local system keyring** (via [go-keyring](https://github.com/zalando/go-keyring)) or **Bitwarden vault**, and connect to remote servers with both password and key-based authentication.
18
- Cross-platform features include support for passh (Unix), plink.exe (Windows), and full tmux integration.
19
-
20
- ![Screenshot](https://github.com/user-attachments/assets/a545d09b-2101-4c6d-b5b9-377b2d554d57)
21
-
22
- ## Features
23
-
24
- - **Integrated SSH Terminal**: Fully functional terminal emulator within Bubble Tea
25
- - VT100/ANSI escape sequence support for proper terminal rendering
26
- - Scrollback buffer (10,000 lines) with keyboard and mouse scrolling
27
- - Text selection with mouse (click and drag)
28
- - Copy to clipboard support (Ctrl+C or automatic on selection)
29
- - Full keyboard support (arrow keys, home, end, function keys, etc.)
30
- - Window resize handling
31
- - Works entirely within the TUI (no external terminal takeover)
32
- - Manage SSH connections in an interactive Bubble Tea TUI
33
- - **Dual credential storage modes:**
34
- - **Local storage** with go-keyring (system keyring integration)
35
- - **Bitwarden vault** storage via Bitwarden CLI
36
- - Secure credential storage: passwords never stored in plaintext
37
- - Password-based SSH login automation using passh (Unix) or plink.exe (Windows)
38
- - Key-based SSH authentication
39
- - Open connections in new tmux windows or integrated terminal
40
- - Fullscreen and responsive TUI
41
-
42
- ## Project Structure
16
+ **SSH-X-Term** is a powerful terminal-based SSH client with a TUI (Text User Interface) built on [Bubble Tea](https://github.com/charmbracelet/bubbletea).
17
+ It seamlessly integrates **SSH connection management**, **SCP/SFTP file transfers**, and **secure credential storage** into a single, responsive interface.
18
+
19
+ Credentials can be stored securely using your **local system keyring** (via [go-keyring](https://github.com/zalando/go-keyring)) or directly in your **Bitwarden vault**.
20
+ Cross-platform features include support for `passh` (Unix), `plink.exe` (Windows), and full `tmux` integration.
21
+
22
+ ---
23
+
24
+ ### 📺 Demo & Walkthrough
25
+
26
+ <div align="center">
27
+
28
+ [![Watch on YouTube](https://img.shields.io/badge/Watch_on_YouTube-FF0000?style=for-the-badge&logo=youtube&logoColor=white)](https://www.youtube.com/watch?v=C-s-Lh_VdpQ)
29
+
30
+ <br><br>
31
+ ![Demo](media/demo.gif)
32
+
33
+ </div>
34
+
35
+ ---
36
+
37
+ ## 🚀 Features
38
+
39
+ ### 🖥️ Integrated SSH Terminal
40
+ Fully functional terminal emulator built entirely within the TUI.
41
+ - **Standards Compliant**: VT100/ANSI escape sequence support for proper rendering.
42
+ - **Power User Friendly**: 10,000 line scrollback buffer, mouse & keyboard scrolling.
43
+ - **Clipboard**: Text selection with mouse (click & drag), automatic copy, or `Ctrl+C`.
44
+ - **Responsive**: Full keyboard support and window resize handling.
45
+
46
+ ### 📂 SCP/SFTP File Manager
47
+ Seamlessly transfer files without leaving the app.
48
+ - **Dual-pane Interface**: Intuitive Local vs. Remote panel navigation.
49
+ - **Full Control**: Upload, Download, Rename, Delete, and Create files/directories.
50
+ - **Search**: Recursive file search (`/` key) to find deep files instantly.
51
+ - **Secure**: Piggybacks on your existing authenticated SSH session.
52
+
53
+ ### 🔐 Secure Credential Management
54
+ - **Local Storage**: Encrypted via system keyring (Keychain, Gnome Keyring, Credential Manager).
55
+ - **Bitwarden Integration**: Direct access to your vault via Bitwarden CLI.
56
+ - **Zero Plaintext**: Passwords are **never** stored in plaintext on disk.
57
+
58
+ ### ⚡ Automation & Compatibility
59
+ - **Auto-Login**: Automates password entry using `passh` (Unix) or `plink.exe` (Windows).
60
+ - **Key Auth**: Full support for private key authentication.
61
+ - **TMUX**: Open connections in new tmux windows automatically.
62
+
63
+ ---
64
+
65
+ ## 📦 Project Structure
43
66
 
44
67
  ```
45
68
  ssh-x-term/
@@ -56,7 +79,7 @@ ssh-x-term/
56
79
  │ ├── ssh/
57
80
  │ │ ├── client.go # SSH client implementation
58
81
  │ │ ├── session_bubbletea_unix.go # SSH session management (Unix)
59
- │ │ ├── session_bubbletea_unix.go # SSH session management (Windows)
82
+ │ │ ├── session_bubbletea_windows.go # SSH session management (Windows)
60
83
  │ └── ui/
61
84
  │ ├── components/
62
85
  │ │ ├── bitwarden_collection_list.go # Bitwarden collection selector
@@ -66,10 +89,11 @@ ssh-x-term/
66
89
  │ │ ├── bitwarden_unlock_form.go # Bitwarden unlock form component
67
90
  │ │ ├── connection_list.go # List of SSH connections
68
91
  │ │ ├── form.go # Form for adding/editing connections
92
+ │ │ ├── scp_manager.go # SCP/SFTP File Manager component
69
93
  │ │ ├── storage_select.go # Credential storage selection (Local/Bitwarden)
70
94
  │ │ ├── terminal.go # Terminal component for SSH sessions
71
95
  │ │ ├── vterm.go # Virtual terminal component integrated inside Bubble Tea
72
- │ │ └── vterm_test.go # Virtual terminal tests
96
+ │ │ └── vterm_test.go # Virtual terminal tests
73
97
  │ ├── connection_handler.go # Connection lifecycle management
74
98
  │ ├── model.go # Main UI model and state
75
99
  │ ├── update.go # Update logic for UI events
@@ -99,22 +123,23 @@ ssh-x-term/
99
123
  **Flow chart**
100
124
  - [FLOW](https://github.com/eugeniofciuvasile/ssh-x-term/blob/main/FLOW.md)
101
125
 
102
- ## Prerequisites
126
+ ---
127
+
128
+ ## 🛠️ Prerequisites
103
129
 
104
130
  - **Go 1.24+**
105
- - **System keyring support** for secure local password storage via go-keyring:
106
- - **macOS**: Keychain (built-in)
107
- - **Linux**: Secret Service API (`gnome-keyring`, `kwallet`, or compatible)
108
- - **Windows**: Credential Manager (built-in)
109
- - **Bitwarden CLI (`bw`)** — optional, for Bitwarden vault credential management ([install guide](https://bitwarden.com/help/cli/))
110
- - **passh** for password authentication on Unix ([compile it from here](https://github.com/clarkwang/passh))
111
- - **tmux** recommended for multi-window SSH sessions ([install guide](https://github.com/tmux/tmux/wiki/Installing))
112
- - **plink.exe** for password authentication on Windows ([download from PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html))
113
- - **(Optional) ssh client** — `ssh` should be available on your system
131
+ - **System Keyring** (for local storage):
132
+ - 🍎 **macOS**: Keychain (built-in)
133
+ - 🐧 **Linux**: Secret Service API (`gnome-keyring`, `kwallet`, etc.)
134
+ - 🪟 **Windows**: Credential Manager (built-in)
135
+ - **External Tools**:
136
+ - `passh` (Unix) or `plink.exe` (Windows) for password automation.
137
+ - `tmux` (optional) for multi-window support.
138
+ - `bw` (optional) for Bitwarden integration.
114
139
 
115
140
  **Ensure all required binaries are available in your `$PATH`.**
116
141
 
117
- ## System dependencies
142
+ ## 📚 System dependencies
118
143
 
119
144
  ssh-x-term requires the following system tools to be installed:
120
145
 
@@ -132,8 +157,6 @@ npm install -g @bitwarden/cli
132
157
  # follow github repo https://github.com/clarkwang/passh to compile passh
133
158
  ```
134
159
 
135
- **Note**: For Linux, ensure you have a keyring daemon running (e.g., `gnome-keyring-daemon` or `kwallet`) for go-keyring to work.
136
-
137
160
  ### macOS (with Homebrew):
138
161
 
139
162
  ```sh
@@ -142,171 +165,105 @@ npm install -g @bitwarden/cli
142
165
  # follow github repo https://github.com/clarkwang/passh to compile passh
143
166
  ```
144
167
 
145
- **Note**: macOS uses Keychain by default, which is already available.
146
-
147
168
  ### Windows:
148
169
 
149
170
  - Install `tmux` and `passh` via WSL/Cygwin or use alternatives.
150
171
  - Install Bitwarden CLI with: `npm install -g @bitwarden/cli`
151
172
  - Windows Credential Manager is used by go-keyring and is built-in.
152
173
 
153
- ## Installation
174
+ ---
175
+
176
+ ## 📥 Installation
154
177
 
155
178
  ### Option 1: Install using npm (Recommended)
156
179
 
157
- The easiest way to install SSH-X-Term is using npm [npm package](https://www.npmjs.com/package/ssh-x-term):
180
+ The easiest way to install is via the [npm package](https://www.npmjs.com/package/ssh-x-term):
158
181
 
159
182
  ```sh
160
183
  # Install globally
161
184
  npm install -g ssh-x-term
162
185
 
163
- # Run the command
186
+ # Run
164
187
  sxt
165
188
  ```
166
189
 
167
- This will automatically download the appropriate binary for your platform and set up the command.
190
+ > This automatically attempts to install required dependencies (`bw`, `passh`, `tmux`) if missing.
168
191
 
169
- The npm installer also attempts to install required dependencies (`bw`, `passh`, `tmux`) if they are not already available in your system's `$PATH`.
192
+ ### Option 2: Build from source
170
193
 
171
- ---
194
+ 1. **Clone & Build**:
195
+ ```sh
196
+ git clone https://github.com/eugeniofciuvasile/ssh-x-term.git
197
+ cd ssh-x-term
198
+ go build -o sxt ./cmd/sxt
199
+ ```
172
200
 
173
- ### Option 2: Build from source
201
+ 2. **Install with Go**:
202
+ ```sh
203
+ go install github.com/eugeniofciuvasile/ssh-x-term/cmd/sxt@latest
204
+ ```
174
205
 
175
- Ensure you have **Go 1.24+** installed. You can use either the Go from your package manager or [install manually](https://go.dev/dl/).
176
- If you manually install Go, add the following to your shell config (`~/.bashrc`, `~/.zshrc`, etc.):
206
+ ### Option 3: Pre-built Binary
177
207
 
178
- ```sh
179
- export GOROOT=/usr/local/go
180
- export GOPATH=$HOME/go
181
- export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
182
- ```
208
+ Download the latest binary from the [Releases Page](https://github.com/eugeniofciuvasile/ssh-x-term/releases).
183
209
 
184
- Then:
210
+ ---
185
211
 
186
- ```sh
187
- # Clone and build the project
188
- git clone https://github.com/eugeniofciuvasile/ssh-x-term.git
189
- cd ssh-x-term
190
- go build -o sxt ./cmd/sxt
191
- ```
212
+ ## 🎮 Usage
213
+
214
+ 1. **Start the App**:
215
+ ```sh
216
+ sxt
217
+ ```
218
+
219
+ 2. **First Run Setup**:
220
+ - Choose **Local Storage** (System Keyring) or **Bitwarden** (Vault).
221
+
222
+ 3. **Manage Connections**:
223
+ - `a` : **Add** a new connection.
224
+ - `e` : **Edit** selected connection.
225
+ - `d` : **Delete** connection.
226
+ - `s` : Open **SCP/SFTP File Manager**.
227
+ - `o` : Toggle **TMUX** mode (open in new window).
228
+ - `Enter` : **Connect** (start SSH session).
229
+
230
+ 4. **📂 Inside SCP Manager**:
231
+ - `Tab` : Switch between **Local** ↔️ **Remote** panels.
232
+ - `Enter` : **Upload** (Local→Remote) or **Download** (Remote→Local).
233
+ - `n` : Create **New** file/folder.
234
+ - `r` : **Rename** file.
235
+ - `x` : **Delete** file.
236
+ - `/` : **Search** recursively.
237
+
238
+ 5. **🖥️ Inside SSH Session**:
239
+ - `PgUp` / `PgDn` : Scroll history.
240
+ - `Ctrl+D` : Send EOF.
241
+ - `Esc` `Esc` (Double Press) : Disconnect and return to menu.
192
242
 
193
- Or install globally with Go:
243
+ ---
194
244
 
195
- ```sh
196
- go install github.com/eugeniofciuvasile/ssh-x-term/cmd/sxt@latest
197
- ```
245
+ ## ⚙️ Configuration
198
246
 
199
- Make sure `$GOPATH/bin` is in your `$PATH` to use `sxt` from anywhere.
247
+ | Storage Mode | Details |
248
+ |--------------|---------|
249
+ | **Local** | • Config at `~/.config/ssh-x-term/ssh-x-term.json`<br>• Passwords stored in **System Keyring**.<br>• Metadata stored in JSON. |
250
+ | **Bitwarden** | • Secrets stored in your **Bitwarden Vault**.<br>• Requires `bw` CLI.<br>• Supports Organizations & Collections. |
200
251
 
201
252
  ---
202
253
 
203
- ### Option 3: Download pre-built binary
254
+ ## 🛡️ Security & Disclaimer
204
255
 
205
- You can download the pre-built binary for your platform from the [Releases](https://github.com/eugeniofciuvasile/ssh-x-term/releases) page.
256
+ **SSH-X-Term** is an independent open-source project released under the [MIT License](LICENSE).
206
257
 
207
- After downloading:
258
+ - **Credentials**: Your passwords/keys are handled securely via system APIs or Bitwarden. They are **never** logged or stored in plaintext files.
259
+ - **Responsibility**: The safe handling of your credentials is ultimately your responsibility. The authors bear no liability for data loss or compromise.
260
+ - **Affiliation**: Not affiliated with Bubble Tea, Bitwarden, or PuTTY.
208
261
 
209
- ```sh
210
- chmod +x sxt
211
- mv sxt /usr/local/bin/ # or any location in your PATH
212
- ```
262
+ ---
213
263
 
214
- ## Usage
215
- 1. Run the app:
216
- ```sh
217
- ./sxt
218
- # or, if installed globally:
219
- sxt
220
- ```
221
-
222
- 2. **First run:** Choose your credential storage mode:
223
- - **Local Storage**: Uses system keyring (Keychain/Secret Service/Credential Manager)
224
- - **Bitwarden**: Uses Bitwarden vault (requires `bw` CLI and authentication)
225
-
226
- 3. **Manage SSH connections:**
227
- - Press `a` to add, `e` to edit, `d` to delete a connection.
228
- - Press `o` to toggle opening connections in a new tmux window.
229
- - Press `Enter` to connect.
230
- - Use arrow keys to navigate.
231
- - Credentials are stored securely based on your chosen storage mode.
232
-
233
- 4. **Connection Form:**
234
- - Fill in fields as prompted.
235
- - `Tab` to navigate, `Ctrl+p` to toggle auth type, `Enter` to submit, `Esc` to cancel.
236
-
237
- 5. **SSH Session:**
238
- - Fully integrated terminal within Bubble Tea UI
239
- - **Navigation:**
240
- - `Esc` `Esc` (double press) to disconnect and return to connection list
241
- - For security, requires pressing ESC twice within 2 seconds
242
- - After session is properly closed (via `logout`, `exit`, or `Ctrl+D`), single `Esc` is allowed
243
- - `Ctrl+D` to send EOF (End of File) signal
244
- - **Scrolling:**
245
- - `PgUp` / `PgDn` to scroll up/down by 10 lines
246
- - `Shift+Up` / `Shift+Down` for scrolling
247
- - `Ctrl+Home` to scroll to top
248
- - `Ctrl+End` to scroll to bottom
249
- - Mouse wheel for scrolling
250
- - **Text Selection & Copy:**
251
- - Click and drag with mouse to select text
252
- - `Ctrl+C` to copy selected text (or send interrupt if no selection)
253
- - `Ctrl+Shift+C` to force copy selection
254
- - Selected text is automatically copied to clipboard on mouse release
255
- - **Terminal Features:**
256
- - VT100/ANSI escape sequence support
257
- - 10,000 line scrollback buffer
258
- - Window resize support
259
- - Full keyboard support (arrow keys, home, end, etc.)
260
- - Passwords are supplied securely (never echoed or stored in plaintext).
261
-
262
- ## Configuration
263
-
264
- SSH-X-Term supports two credential storage modes:
265
-
266
- ### Local Storage (Default)
267
- - Config is stored at: `~/.config/ssh-x-term/ssh-x-term.json`
268
- - **Passwords are stored securely in your system keyring** via `go-keyring`:
269
- - **macOS**: Stored in Keychain
270
- - **Linux**: Stored via Secret Service API (gnome-keyring/kwallet)
271
- - **Windows**: Stored in Credential Manager
272
- - Connection metadata (host, port, username, etc.) is saved in the JSON file
273
- - Passwords are **never** stored in plaintext in the JSON file
274
-
275
- ### Bitwarden Vault Storage
276
- - Connection secrets are stored in your Bitwarden vault
277
- - Requires Bitwarden CLI (`bw`) to be installed and configured
278
- - Supports both personal vaults and organization collections
279
-
280
- ## Security Notes
281
-
282
- - **Local Storage Mode**: Passwords are stored securely using **go-keyring**, which integrates with your system's native credential storage:
283
- - macOS: Keychain
284
- - Linux: Secret Service API (gnome-keyring, kwallet, etc.)
285
- - Windows: Credential Manager
286
- - **Bitwarden Mode**: Credentials are managed via Bitwarden CLI and stored in your encrypted vault
287
- - **SSH Authentication**: Passwords are supplied securely via subprocesses (`passh`, `plink.exe`) and never echoed or logged
288
- - **No plaintext passwords**: Passwords are **never** written to disk in plaintext (not in config files or logs)
289
-
290
- ## License
291
-
292
- [MIT](LICENSE)
293
-
294
- ## Disclaimer
295
-
296
- SSH-X-Term is an independent open-source project released under the MIT License.
297
- It is **not affiliated with, endorsed by, or supported by** any of the credited projects, including Bubble Tea, Bitwarden, passh, PuTTY/plink, or any other third-party software listed above.
298
-
299
- **Security Notice:**
300
- SSH-X-Term integrates with external tools for SSH and credential management.
301
- The safe handling, storage, and security of your credentials (including passwords and keys) is ultimately your responsibility.
302
- By using this software, you agree that the author and contributors bear **no liability** for any potential loss, compromise, or misuse of credentials or data.
303
-
304
- For details, see the [MIT License](LICENSE).
305
-
306
- ## Credits
307
-
308
- - [Bubble Tea](https://github.com/charmbracelet/bubbletea) — Terminal UI framework
309
- - [go-keyring](https://github.com/zalando/go-keyring) — Secure system keyring integration
310
- - [Bitwarden CLI](https://bitwarden.com/help/cli/) — Bitwarden vault management
311
- - [passh](https://github.com/clarkwang/passh) — Password-based SSH automation (Unix)
312
- - [PuTTY/plink.exe](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) — Password-based SSH automation (Windows)
264
+ ## 👏 Credits
265
+
266
+ - [Bubble Tea](https://github.com/charmbracelet/bubbletea) — The TUI framework.
267
+ - [go-keyring](https://github.com/zalando/go-keyring) — Secure keyring integration.
268
+ - [Bitwarden CLI](https://bitwarden.com/help/cli/) Vault management.
269
+ - [passh](https://github.com/clarkwang/passh) & [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) — Auth automation.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ssh-x-term",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
4
4
  "description": "TUI to handle multiple SSH connections simultaneously",
5
5
  "main": "index.js",
6
6
  "bin": {