ssh-to-code 1.0.0__tar.gz → 1.0.2__tar.gz
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.
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/PKG-INFO +58 -19
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/README.md +57 -18
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/pyproject.toml +1 -1
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_dir_browser.py +28 -12
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_to_code.egg-info/PKG-INFO +58 -19
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/LICENSE +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/config_manager.py +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/host_selector.py +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/save_config.py +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/setup.cfg +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_handler.py +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_to_code.egg-info/SOURCES.txt +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_to_code.egg-info/dependency_links.txt +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_to_code.egg-info/entry_points.txt +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_to_code.egg-info/requires.txt +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/ssh_to_code.egg-info/top_level.txt +0 -0
- {ssh_to_code-1.0.0 → ssh_to_code-1.0.2}/vscode_integration.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssh-to-code
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: Terminal-based SSH directory browser with VS Code integration
|
|
5
5
|
Author-email: Rajesh <rajesh-cs18@users.noreply.github.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -33,7 +33,7 @@ Dynamic: license-file
|
|
|
33
33
|
|
|
34
34
|
# SSH Directory Browser
|
|
35
35
|
|
|
36
|
-
A terminal-based directory browser that lets you SSH into a remote server, navigate through directories interactively, and open selected directories directly in VS Code using the Remote-SSH extension.
|
|
36
|
+
A terminal-based directory browser that lets you SSH into a remote server, navigate through directories interactively, and open selected directories or `.code-workspace` files directly in VS Code using the Remote-SSH extension.
|
|
37
37
|
|
|
38
38
|

|
|
39
39
|

|
|
@@ -46,6 +46,7 @@ A terminal-based directory browser that lets you SSH into a remote server, navig
|
|
|
46
46
|
- 🔐 **Secure SSH Connection** - Support for key-based and password authentication
|
|
47
47
|
- 📂 **Visual File Browser** - Clear indicators for directories, files, executables, and symlinks
|
|
48
48
|
- 💻 **VS Code Integration** - Open any remote directory directly in VS Code with one keystroke
|
|
49
|
+
- 🧩 **Workspace File Support** - Open remote `.code-workspace` files directly in VS Code
|
|
49
50
|
- ⚙️ **Configuration Management** - Save frequently used SSH hosts for quick access
|
|
50
51
|
- 🎨 **Keyboard Navigation** - Fast and efficient navigation using arrow keys
|
|
51
52
|
|
|
@@ -57,14 +58,42 @@ A terminal-based directory browser that lets you SSH into a remote server, navig
|
|
|
57
58
|
|
|
58
59
|
## Installation
|
|
59
60
|
|
|
60
|
-
### 1.
|
|
61
|
+
### 1. Install from PyPI (recommended)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pip install ssh-to-code
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 2. Linux/Ubuntu (recommended): install with pipx
|
|
68
|
+
|
|
69
|
+
Ubuntu and other modern Debian-based systems may block global `pip` installs with PEP 668 (`externally-managed-environment`).
|
|
70
|
+
For CLI tools like `ssh-to-code`, `pipx` is the safest option:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
sudo apt update
|
|
74
|
+
sudo apt install -y pipx
|
|
75
|
+
pipx ensurepath
|
|
76
|
+
|
|
77
|
+
# Restart terminal, then:
|
|
78
|
+
pipx install ssh-to-code
|
|
79
|
+
ssh-browse --help
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Verify CLI installation
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
ssh-browse --help
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 4. (Optional) Install from source for development
|
|
61
89
|
|
|
62
90
|
```bash
|
|
63
91
|
git clone <repository-url>
|
|
64
92
|
cd ssh-to-code
|
|
93
|
+
pip install -e .
|
|
65
94
|
```
|
|
66
95
|
|
|
67
|
-
###
|
|
96
|
+
### 5. (Source install only) Install dependencies manually
|
|
68
97
|
|
|
69
98
|
```bash
|
|
70
99
|
pip install paramiko
|
|
@@ -76,13 +105,13 @@ Or use the provided requirements file:
|
|
|
76
105
|
pip install -r requirements.txt
|
|
77
106
|
```
|
|
78
107
|
|
|
79
|
-
###
|
|
108
|
+
### 6. (Source install only) Make the script executable
|
|
80
109
|
|
|
81
110
|
```bash
|
|
82
111
|
chmod +x ssh_dir_browser.py
|
|
83
112
|
```
|
|
84
113
|
|
|
85
|
-
###
|
|
114
|
+
### 7. (Optional, source install only) Add to PATH
|
|
86
115
|
|
|
87
116
|
For easy access from anywhere:
|
|
88
117
|
|
|
@@ -101,42 +130,41 @@ sudo ln -s /path/to/ssh-to-code/ssh_dir_browser.py /usr/local/bin/ssh-browse
|
|
|
101
130
|
Connect to a remote server and start browsing:
|
|
102
131
|
|
|
103
132
|
```bash
|
|
104
|
-
#
|
|
105
|
-
|
|
133
|
+
# Installed from PyPI or pip install -e .
|
|
134
|
+
ssh-browse user@hostname
|
|
106
135
|
|
|
107
|
-
#
|
|
108
|
-
source venv/bin/activate
|
|
136
|
+
# If running directly from source without install:
|
|
109
137
|
python ssh_dir_browser.py user@hostname
|
|
110
138
|
```
|
|
111
139
|
|
|
112
140
|
### With Custom Port
|
|
113
141
|
|
|
114
142
|
```bash
|
|
115
|
-
|
|
143
|
+
ssh-browse user@hostname -p 2222
|
|
116
144
|
```
|
|
117
145
|
|
|
118
146
|
### With SSH Key
|
|
119
147
|
|
|
120
148
|
```bash
|
|
121
|
-
|
|
149
|
+
ssh-browse user@hostname -i ~/.ssh/my_key
|
|
122
150
|
```
|
|
123
151
|
|
|
124
152
|
### Start in Specific Directory
|
|
125
153
|
|
|
126
154
|
```bash
|
|
127
|
-
|
|
155
|
+
ssh-browse user@hostname --start-path /var/www
|
|
128
156
|
```
|
|
129
157
|
|
|
130
158
|
### Password Authentication
|
|
131
159
|
|
|
132
160
|
```bash
|
|
133
|
-
|
|
161
|
+
ssh-browse user@hostname --password
|
|
134
162
|
```
|
|
135
163
|
|
|
136
164
|
### AWS EC2 Example
|
|
137
165
|
|
|
138
166
|
```bash
|
|
139
|
-
|
|
167
|
+
ssh-browse ubuntu@ec2-12-34-56-78.compute.amazonaws.com -i ~/Downloads/aws-key.pem
|
|
140
168
|
```
|
|
141
169
|
|
|
142
170
|
## Usage
|
|
@@ -147,7 +175,7 @@ python ssh_dir_browser.py user@hostname
|
|
|
147
175
|
|-----|--------|
|
|
148
176
|
| `↑` / `↓` | Navigate up/down |
|
|
149
177
|
| `Enter` | Open directory |
|
|
150
|
-
| `o` | Open current directory in VS Code |
|
|
178
|
+
| `o` | Open current directory, or selected `.code-workspace` file, in VS Code |
|
|
151
179
|
| `n` | Create new folder |
|
|
152
180
|
| `h` | Go to home directory |
|
|
153
181
|
| `r` | Refresh directory listing |
|
|
@@ -160,14 +188,15 @@ python ssh_dir_browser.py user@hostname
|
|
|
160
188
|
3. Select `..` to go to parent directory
|
|
161
189
|
4. Press `n` to create a new folder in the current directory
|
|
162
190
|
5. Press `r` to refresh the directory contents
|
|
163
|
-
6. Press `o`
|
|
191
|
+
6. Press `o` to open the current directory in VS Code
|
|
192
|
+
7. Select a `.code-workspace` file and press `o` to open that workspace in VS Code
|
|
164
193
|
|
|
165
194
|
### VS Code Integration
|
|
166
195
|
|
|
167
196
|
When you press `o`, the application will:
|
|
168
197
|
1. Open VS Code
|
|
169
198
|
2. Connect to the remote server via Remote-SSH
|
|
170
|
-
3. Open the selected
|
|
199
|
+
3. Open the current directory, or the selected `.code-workspace` file
|
|
171
200
|
4. Exit the browser
|
|
172
201
|
|
|
173
202
|
Make sure you have:
|
|
@@ -311,7 +340,17 @@ Install it from VS Code:
|
|
|
311
340
|
Install the required dependency:
|
|
312
341
|
|
|
313
342
|
```bash
|
|
314
|
-
pip install
|
|
343
|
+
pip install ssh-to-code
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Externally Managed Environment (Ubuntu/Debian)
|
|
347
|
+
|
|
348
|
+
If you see `externally-managed-environment`, use `pipx` instead of system `pip`:
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
sudo apt install -y pipx
|
|
352
|
+
pipx ensurepath
|
|
353
|
+
pipx install ssh-to-code
|
|
315
354
|
```
|
|
316
355
|
|
|
317
356
|
## Advanced Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SSH Directory Browser
|
|
2
2
|
|
|
3
|
-
A terminal-based directory browser that lets you SSH into a remote server, navigate through directories interactively, and open selected directories directly in VS Code using the Remote-SSH extension.
|
|
3
|
+
A terminal-based directory browser that lets you SSH into a remote server, navigate through directories interactively, and open selected directories or `.code-workspace` files directly in VS Code using the Remote-SSH extension.
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|

|
|
@@ -13,6 +13,7 @@ A terminal-based directory browser that lets you SSH into a remote server, navig
|
|
|
13
13
|
- 🔐 **Secure SSH Connection** - Support for key-based and password authentication
|
|
14
14
|
- 📂 **Visual File Browser** - Clear indicators for directories, files, executables, and symlinks
|
|
15
15
|
- 💻 **VS Code Integration** - Open any remote directory directly in VS Code with one keystroke
|
|
16
|
+
- 🧩 **Workspace File Support** - Open remote `.code-workspace` files directly in VS Code
|
|
16
17
|
- ⚙️ **Configuration Management** - Save frequently used SSH hosts for quick access
|
|
17
18
|
- 🎨 **Keyboard Navigation** - Fast and efficient navigation using arrow keys
|
|
18
19
|
|
|
@@ -24,14 +25,42 @@ A terminal-based directory browser that lets you SSH into a remote server, navig
|
|
|
24
25
|
|
|
25
26
|
## Installation
|
|
26
27
|
|
|
27
|
-
### 1.
|
|
28
|
+
### 1. Install from PyPI (recommended)
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install ssh-to-code
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. Linux/Ubuntu (recommended): install with pipx
|
|
35
|
+
|
|
36
|
+
Ubuntu and other modern Debian-based systems may block global `pip` installs with PEP 668 (`externally-managed-environment`).
|
|
37
|
+
For CLI tools like `ssh-to-code`, `pipx` is the safest option:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
sudo apt update
|
|
41
|
+
sudo apt install -y pipx
|
|
42
|
+
pipx ensurepath
|
|
43
|
+
|
|
44
|
+
# Restart terminal, then:
|
|
45
|
+
pipx install ssh-to-code
|
|
46
|
+
ssh-browse --help
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. Verify CLI installation
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
ssh-browse --help
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 4. (Optional) Install from source for development
|
|
28
56
|
|
|
29
57
|
```bash
|
|
30
58
|
git clone <repository-url>
|
|
31
59
|
cd ssh-to-code
|
|
60
|
+
pip install -e .
|
|
32
61
|
```
|
|
33
62
|
|
|
34
|
-
###
|
|
63
|
+
### 5. (Source install only) Install dependencies manually
|
|
35
64
|
|
|
36
65
|
```bash
|
|
37
66
|
pip install paramiko
|
|
@@ -43,13 +72,13 @@ Or use the provided requirements file:
|
|
|
43
72
|
pip install -r requirements.txt
|
|
44
73
|
```
|
|
45
74
|
|
|
46
|
-
###
|
|
75
|
+
### 6. (Source install only) Make the script executable
|
|
47
76
|
|
|
48
77
|
```bash
|
|
49
78
|
chmod +x ssh_dir_browser.py
|
|
50
79
|
```
|
|
51
80
|
|
|
52
|
-
###
|
|
81
|
+
### 7. (Optional, source install only) Add to PATH
|
|
53
82
|
|
|
54
83
|
For easy access from anywhere:
|
|
55
84
|
|
|
@@ -68,42 +97,41 @@ sudo ln -s /path/to/ssh-to-code/ssh_dir_browser.py /usr/local/bin/ssh-browse
|
|
|
68
97
|
Connect to a remote server and start browsing:
|
|
69
98
|
|
|
70
99
|
```bash
|
|
71
|
-
#
|
|
72
|
-
|
|
100
|
+
# Installed from PyPI or pip install -e .
|
|
101
|
+
ssh-browse user@hostname
|
|
73
102
|
|
|
74
|
-
#
|
|
75
|
-
source venv/bin/activate
|
|
103
|
+
# If running directly from source without install:
|
|
76
104
|
python ssh_dir_browser.py user@hostname
|
|
77
105
|
```
|
|
78
106
|
|
|
79
107
|
### With Custom Port
|
|
80
108
|
|
|
81
109
|
```bash
|
|
82
|
-
|
|
110
|
+
ssh-browse user@hostname -p 2222
|
|
83
111
|
```
|
|
84
112
|
|
|
85
113
|
### With SSH Key
|
|
86
114
|
|
|
87
115
|
```bash
|
|
88
|
-
|
|
116
|
+
ssh-browse user@hostname -i ~/.ssh/my_key
|
|
89
117
|
```
|
|
90
118
|
|
|
91
119
|
### Start in Specific Directory
|
|
92
120
|
|
|
93
121
|
```bash
|
|
94
|
-
|
|
122
|
+
ssh-browse user@hostname --start-path /var/www
|
|
95
123
|
```
|
|
96
124
|
|
|
97
125
|
### Password Authentication
|
|
98
126
|
|
|
99
127
|
```bash
|
|
100
|
-
|
|
128
|
+
ssh-browse user@hostname --password
|
|
101
129
|
```
|
|
102
130
|
|
|
103
131
|
### AWS EC2 Example
|
|
104
132
|
|
|
105
133
|
```bash
|
|
106
|
-
|
|
134
|
+
ssh-browse ubuntu@ec2-12-34-56-78.compute.amazonaws.com -i ~/Downloads/aws-key.pem
|
|
107
135
|
```
|
|
108
136
|
|
|
109
137
|
## Usage
|
|
@@ -114,7 +142,7 @@ python ssh_dir_browser.py user@hostname
|
|
|
114
142
|
|-----|--------|
|
|
115
143
|
| `↑` / `↓` | Navigate up/down |
|
|
116
144
|
| `Enter` | Open directory |
|
|
117
|
-
| `o` | Open current directory in VS Code |
|
|
145
|
+
| `o` | Open current directory, or selected `.code-workspace` file, in VS Code |
|
|
118
146
|
| `n` | Create new folder |
|
|
119
147
|
| `h` | Go to home directory |
|
|
120
148
|
| `r` | Refresh directory listing |
|
|
@@ -127,14 +155,15 @@ python ssh_dir_browser.py user@hostname
|
|
|
127
155
|
3. Select `..` to go to parent directory
|
|
128
156
|
4. Press `n` to create a new folder in the current directory
|
|
129
157
|
5. Press `r` to refresh the directory contents
|
|
130
|
-
6. Press `o`
|
|
158
|
+
6. Press `o` to open the current directory in VS Code
|
|
159
|
+
7. Select a `.code-workspace` file and press `o` to open that workspace in VS Code
|
|
131
160
|
|
|
132
161
|
### VS Code Integration
|
|
133
162
|
|
|
134
163
|
When you press `o`, the application will:
|
|
135
164
|
1. Open VS Code
|
|
136
165
|
2. Connect to the remote server via Remote-SSH
|
|
137
|
-
3. Open the selected
|
|
166
|
+
3. Open the current directory, or the selected `.code-workspace` file
|
|
138
167
|
4. Exit the browser
|
|
139
168
|
|
|
140
169
|
Make sure you have:
|
|
@@ -278,7 +307,17 @@ Install it from VS Code:
|
|
|
278
307
|
Install the required dependency:
|
|
279
308
|
|
|
280
309
|
```bash
|
|
281
|
-
pip install
|
|
310
|
+
pip install ssh-to-code
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Externally Managed Environment (Ubuntu/Debian)
|
|
314
|
+
|
|
315
|
+
If you see `externally-managed-environment`, use `pipx` instead of system `pip`:
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
sudo apt install -y pipx
|
|
319
|
+
pipx ensurepath
|
|
320
|
+
pipx install ssh-to-code
|
|
282
321
|
```
|
|
283
322
|
|
|
284
323
|
## Advanced Features
|
|
@@ -122,20 +122,30 @@ class DirectoryBrowser:
|
|
|
122
122
|
host = self.ssh_handler.hostname
|
|
123
123
|
user = self.ssh_handler.username
|
|
124
124
|
port = self.ssh_handler.port
|
|
125
|
-
|
|
126
|
-
#
|
|
127
|
-
#
|
|
128
|
-
|
|
125
|
+
|
|
126
|
+
# By default open the current directory. If a .code-workspace file is
|
|
127
|
+
# selected, open that workspace file instead.
|
|
128
|
+
target_path = self.current_path
|
|
129
|
+
target_label = "directory"
|
|
130
|
+
if self.items and 0 <= self.selected_index < len(self.items):
|
|
131
|
+
selected_name, selected_type = self.items[self.selected_index]
|
|
132
|
+
if selected_type == "file" and selected_name.endswith('.code-workspace'):
|
|
133
|
+
target_path = os.path.join(self.current_path, selected_name)
|
|
134
|
+
target_label = "workspace"
|
|
135
|
+
|
|
136
|
+
ssh_target = f"{user}@{host}"
|
|
129
137
|
if port != 22:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
138
|
+
ssh_target += f":{port}"
|
|
139
|
+
|
|
133
140
|
# Open VS Code
|
|
134
|
-
subprocess.Popen(['code', '--remote', f'ssh-remote+{
|
|
141
|
+
subprocess.Popen(['code', '--remote', f'ssh-remote+{ssh_target}', target_path],
|
|
135
142
|
stdout=subprocess.DEVNULL,
|
|
136
143
|
stderr=subprocess.DEVNULL)
|
|
137
|
-
|
|
138
|
-
|
|
144
|
+
|
|
145
|
+
if target_label == "workspace":
|
|
146
|
+
return True, f"Opening workspace {target_path} in VS Code..."
|
|
147
|
+
|
|
148
|
+
return True, f"Opening {target_path} in VS Code..."
|
|
139
149
|
except Exception as e:
|
|
140
150
|
return False, f"Error opening VS Code: {str(e)}"
|
|
141
151
|
|
|
@@ -153,7 +163,7 @@ class DirectoryBrowser:
|
|
|
153
163
|
stdscr.addstr(1, 0, path_line[:width-1], curses.A_BOLD)
|
|
154
164
|
|
|
155
165
|
# Help line
|
|
156
|
-
help_text = "↑/↓: Navigate | Enter: Open | 'o': VS Code | 'n': New Folder | 'r': Refresh | 'q': Quit"
|
|
166
|
+
help_text = "↑/↓: Navigate | Enter: Open | 'o': VS Code (dir/.code-workspace) | 'n': New Folder | 'r': Refresh | 'q': Quit"
|
|
157
167
|
stdscr.addstr(2, 0, help_text[:width-1], curses.A_DIM)
|
|
158
168
|
|
|
159
169
|
# Separator
|
|
@@ -183,6 +193,9 @@ class DirectoryBrowser:
|
|
|
183
193
|
elif item_type == "link":
|
|
184
194
|
display = f"🔗 {name}@"
|
|
185
195
|
attr = curses.A_DIM
|
|
196
|
+
elif name.endswith('.code-workspace'):
|
|
197
|
+
display = f"🧩 {name}"
|
|
198
|
+
attr = curses.A_NORMAL
|
|
186
199
|
else:
|
|
187
200
|
display = f"📄 {name}"
|
|
188
201
|
attr = curses.A_NORMAL
|
|
@@ -246,7 +259,10 @@ class DirectoryBrowser:
|
|
|
246
259
|
self.navigate_to(name)
|
|
247
260
|
self.status_message = ""
|
|
248
261
|
else:
|
|
249
|
-
|
|
262
|
+
if name.endswith('.code-workspace'):
|
|
263
|
+
self.status_message = f"Select 'o' to open workspace: {name}"
|
|
264
|
+
else:
|
|
265
|
+
self.status_message = f"'{name}' is not a directory"
|
|
250
266
|
elif key == ord('o') or key == ord('O'):
|
|
251
267
|
# Open in VS Code
|
|
252
268
|
success, message = self.open_in_vscode()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ssh-to-code
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: Terminal-based SSH directory browser with VS Code integration
|
|
5
5
|
Author-email: Rajesh <rajesh-cs18@users.noreply.github.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -33,7 +33,7 @@ Dynamic: license-file
|
|
|
33
33
|
|
|
34
34
|
# SSH Directory Browser
|
|
35
35
|
|
|
36
|
-
A terminal-based directory browser that lets you SSH into a remote server, navigate through directories interactively, and open selected directories directly in VS Code using the Remote-SSH extension.
|
|
36
|
+
A terminal-based directory browser that lets you SSH into a remote server, navigate through directories interactively, and open selected directories or `.code-workspace` files directly in VS Code using the Remote-SSH extension.
|
|
37
37
|
|
|
38
38
|

|
|
39
39
|

|
|
@@ -46,6 +46,7 @@ A terminal-based directory browser that lets you SSH into a remote server, navig
|
|
|
46
46
|
- 🔐 **Secure SSH Connection** - Support for key-based and password authentication
|
|
47
47
|
- 📂 **Visual File Browser** - Clear indicators for directories, files, executables, and symlinks
|
|
48
48
|
- 💻 **VS Code Integration** - Open any remote directory directly in VS Code with one keystroke
|
|
49
|
+
- 🧩 **Workspace File Support** - Open remote `.code-workspace` files directly in VS Code
|
|
49
50
|
- ⚙️ **Configuration Management** - Save frequently used SSH hosts for quick access
|
|
50
51
|
- 🎨 **Keyboard Navigation** - Fast and efficient navigation using arrow keys
|
|
51
52
|
|
|
@@ -57,14 +58,42 @@ A terminal-based directory browser that lets you SSH into a remote server, navig
|
|
|
57
58
|
|
|
58
59
|
## Installation
|
|
59
60
|
|
|
60
|
-
### 1.
|
|
61
|
+
### 1. Install from PyPI (recommended)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pip install ssh-to-code
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 2. Linux/Ubuntu (recommended): install with pipx
|
|
68
|
+
|
|
69
|
+
Ubuntu and other modern Debian-based systems may block global `pip` installs with PEP 668 (`externally-managed-environment`).
|
|
70
|
+
For CLI tools like `ssh-to-code`, `pipx` is the safest option:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
sudo apt update
|
|
74
|
+
sudo apt install -y pipx
|
|
75
|
+
pipx ensurepath
|
|
76
|
+
|
|
77
|
+
# Restart terminal, then:
|
|
78
|
+
pipx install ssh-to-code
|
|
79
|
+
ssh-browse --help
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. Verify CLI installation
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
ssh-browse --help
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 4. (Optional) Install from source for development
|
|
61
89
|
|
|
62
90
|
```bash
|
|
63
91
|
git clone <repository-url>
|
|
64
92
|
cd ssh-to-code
|
|
93
|
+
pip install -e .
|
|
65
94
|
```
|
|
66
95
|
|
|
67
|
-
###
|
|
96
|
+
### 5. (Source install only) Install dependencies manually
|
|
68
97
|
|
|
69
98
|
```bash
|
|
70
99
|
pip install paramiko
|
|
@@ -76,13 +105,13 @@ Or use the provided requirements file:
|
|
|
76
105
|
pip install -r requirements.txt
|
|
77
106
|
```
|
|
78
107
|
|
|
79
|
-
###
|
|
108
|
+
### 6. (Source install only) Make the script executable
|
|
80
109
|
|
|
81
110
|
```bash
|
|
82
111
|
chmod +x ssh_dir_browser.py
|
|
83
112
|
```
|
|
84
113
|
|
|
85
|
-
###
|
|
114
|
+
### 7. (Optional, source install only) Add to PATH
|
|
86
115
|
|
|
87
116
|
For easy access from anywhere:
|
|
88
117
|
|
|
@@ -101,42 +130,41 @@ sudo ln -s /path/to/ssh-to-code/ssh_dir_browser.py /usr/local/bin/ssh-browse
|
|
|
101
130
|
Connect to a remote server and start browsing:
|
|
102
131
|
|
|
103
132
|
```bash
|
|
104
|
-
#
|
|
105
|
-
|
|
133
|
+
# Installed from PyPI or pip install -e .
|
|
134
|
+
ssh-browse user@hostname
|
|
106
135
|
|
|
107
|
-
#
|
|
108
|
-
source venv/bin/activate
|
|
136
|
+
# If running directly from source without install:
|
|
109
137
|
python ssh_dir_browser.py user@hostname
|
|
110
138
|
```
|
|
111
139
|
|
|
112
140
|
### With Custom Port
|
|
113
141
|
|
|
114
142
|
```bash
|
|
115
|
-
|
|
143
|
+
ssh-browse user@hostname -p 2222
|
|
116
144
|
```
|
|
117
145
|
|
|
118
146
|
### With SSH Key
|
|
119
147
|
|
|
120
148
|
```bash
|
|
121
|
-
|
|
149
|
+
ssh-browse user@hostname -i ~/.ssh/my_key
|
|
122
150
|
```
|
|
123
151
|
|
|
124
152
|
### Start in Specific Directory
|
|
125
153
|
|
|
126
154
|
```bash
|
|
127
|
-
|
|
155
|
+
ssh-browse user@hostname --start-path /var/www
|
|
128
156
|
```
|
|
129
157
|
|
|
130
158
|
### Password Authentication
|
|
131
159
|
|
|
132
160
|
```bash
|
|
133
|
-
|
|
161
|
+
ssh-browse user@hostname --password
|
|
134
162
|
```
|
|
135
163
|
|
|
136
164
|
### AWS EC2 Example
|
|
137
165
|
|
|
138
166
|
```bash
|
|
139
|
-
|
|
167
|
+
ssh-browse ubuntu@ec2-12-34-56-78.compute.amazonaws.com -i ~/Downloads/aws-key.pem
|
|
140
168
|
```
|
|
141
169
|
|
|
142
170
|
## Usage
|
|
@@ -147,7 +175,7 @@ python ssh_dir_browser.py user@hostname
|
|
|
147
175
|
|-----|--------|
|
|
148
176
|
| `↑` / `↓` | Navigate up/down |
|
|
149
177
|
| `Enter` | Open directory |
|
|
150
|
-
| `o` | Open current directory in VS Code |
|
|
178
|
+
| `o` | Open current directory, or selected `.code-workspace` file, in VS Code |
|
|
151
179
|
| `n` | Create new folder |
|
|
152
180
|
| `h` | Go to home directory |
|
|
153
181
|
| `r` | Refresh directory listing |
|
|
@@ -160,14 +188,15 @@ python ssh_dir_browser.py user@hostname
|
|
|
160
188
|
3. Select `..` to go to parent directory
|
|
161
189
|
4. Press `n` to create a new folder in the current directory
|
|
162
190
|
5. Press `r` to refresh the directory contents
|
|
163
|
-
6. Press `o`
|
|
191
|
+
6. Press `o` to open the current directory in VS Code
|
|
192
|
+
7. Select a `.code-workspace` file and press `o` to open that workspace in VS Code
|
|
164
193
|
|
|
165
194
|
### VS Code Integration
|
|
166
195
|
|
|
167
196
|
When you press `o`, the application will:
|
|
168
197
|
1. Open VS Code
|
|
169
198
|
2. Connect to the remote server via Remote-SSH
|
|
170
|
-
3. Open the selected
|
|
199
|
+
3. Open the current directory, or the selected `.code-workspace` file
|
|
171
200
|
4. Exit the browser
|
|
172
201
|
|
|
173
202
|
Make sure you have:
|
|
@@ -311,7 +340,17 @@ Install it from VS Code:
|
|
|
311
340
|
Install the required dependency:
|
|
312
341
|
|
|
313
342
|
```bash
|
|
314
|
-
pip install
|
|
343
|
+
pip install ssh-to-code
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Externally Managed Environment (Ubuntu/Debian)
|
|
347
|
+
|
|
348
|
+
If you see `externally-managed-environment`, use `pipx` instead of system `pip`:
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
sudo apt install -y pipx
|
|
352
|
+
pipx ensurepath
|
|
353
|
+
pipx install ssh-to-code
|
|
315
354
|
```
|
|
316
355
|
|
|
317
356
|
## Advanced Features
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|