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.
- package/README.md +134 -177
- 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
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
+
[](https://www.youtube.com/watch?v=C-s-Lh_VdpQ)
|
|
29
|
+
|
|
30
|
+
<br><br>
|
|
31
|
+

|
|
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
|
-
│ │ ├──
|
|
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
|
|
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
|
-
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 🛠️ Prerequisites
|
|
103
129
|
|
|
104
130
|
- **Go 1.24+**
|
|
105
|
-
- **System
|
|
106
|
-
- **macOS**: Keychain (built-in)
|
|
107
|
-
- **Linux**: Secret Service API (`gnome-keyring`, `kwallet`,
|
|
108
|
-
- **Windows**: Credential Manager (built-in)
|
|
109
|
-
- **
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
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
|
-
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 📥 Installation
|
|
154
177
|
|
|
155
178
|
### Option 1: Install using npm (Recommended)
|
|
156
179
|
|
|
157
|
-
The easiest way to install
|
|
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
|
|
186
|
+
# Run
|
|
164
187
|
sxt
|
|
165
188
|
```
|
|
166
189
|
|
|
167
|
-
This
|
|
190
|
+
> This automatically attempts to install required dependencies (`bw`, `passh`, `tmux`) if missing.
|
|
168
191
|
|
|
169
|
-
|
|
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
|
-
|
|
201
|
+
2. **Install with Go**:
|
|
202
|
+
```sh
|
|
203
|
+
go install github.com/eugeniofciuvasile/ssh-x-term/cmd/sxt@latest
|
|
204
|
+
```
|
|
174
205
|
|
|
175
|
-
|
|
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
|
-
|
|
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
|
-
|
|
210
|
+
---
|
|
185
211
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
243
|
+
---
|
|
194
244
|
|
|
195
|
-
|
|
196
|
-
go install github.com/eugeniofciuvasile/ssh-x-term/cmd/sxt@latest
|
|
197
|
-
```
|
|
245
|
+
## ⚙️ Configuration
|
|
198
246
|
|
|
199
|
-
|
|
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
|
-
|
|
254
|
+
## 🛡️ Security & Disclaimer
|
|
204
255
|
|
|
205
|
-
|
|
256
|
+
**SSH-X-Term** is an independent open-source project released under the [MIT License](LICENSE).
|
|
206
257
|
|
|
207
|
-
|
|
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
|
-
|
|
210
|
-
chmod +x sxt
|
|
211
|
-
mv sxt /usr/local/bin/ # or any location in your PATH
|
|
212
|
-
```
|
|
262
|
+
---
|
|
213
263
|
|
|
214
|
-
##
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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.
|