Scenario: Create socks5 proxy over ssh
This would enable a heavily protected host to access internet for updating packages, executing “pip install” (how to) or something like that.
Dependence:
Example 1

## filename: example1.spy
from socksproxy import ThreadingSocksProxy
import threading, traceback
remote_port = 8080
with $.connect('user@host-1',password='123456') as c1:
with $.connect('user2@host-2',password='123456') as c2:
try:
transport = c2.client.get_transport()
ThreadingSocksProxy(transport,remote_port).start().join()
## To require credentials for client, do it like blow:
#ThreadingSocksProxy(transport,remote_port,'username','password').start().join()
except KeyboardInterrupt:
pass
except:
traceback.print_exc()
Execution & Tests
## Execution on localhost
sshscript example1.spy
## Tests on host-2
curl -k -x socks5h://localhost:8080 https://www.google.com
## When requires credentials
curl -k -U username:password -x socks5h://localhost:8080 https://www.google.com
Last Updated: 2026-07-25 16:59:40
Table of contents
- SSHScript v3.1 Documentation
- Accounts (legacy URL)
- Checking the syncing status of two MySQL servers
- Getting Started with SSHScript
- Page not found
- Q: What can it do that Netmiko doesn’t do? (origin)
- SSHScript Documentation
- SSHScript Documents
- SSHScript v2.0 CLI(Draft)
- SSHScript v2.0 Commands Execution and Console
- SSHScript v2.0 Console of sudo and su
- SSHScript v2.0 Getting Started
- SSHScript v2.0 Interactive Commands and Foreground Commands
- SSHScript v2.0 Make Connections
- SSHScript v2.0 Recipes
- SSHScript v2.0 Reference Guide
- SSHScript v2.0 Stdout, Stderr and Exitcode
- SSHScript v2.0 Threading Support
- SSHScript v2.0 Upload and Download Files
- SSHScript v2.0.2 Release Notes
- SSHScript v3.0 Interactive and Foreground Commands
- SSHScript v3.0 Reference Guide
- SSHScript v3.0.0 Release Notes
- SSHScript v3.1
- SSHScript vs. Ansible
- 用 Python 作系統自動化