Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔒 OS SSH — Open Source SSH Client

A lightweight, cross-platform SSH client built with Python, Tkinter, and Paramiko. Designed for developers, sysadmins, and everyday SSH use.

License Python Version


Features

  • Interactive Terminal — Full shell sessions with real-time output, search (Ctrl+F), and session transcript logging
  • SFTP File Browser — Browse, upload, download, rename, delete files, create directories, with transfer progress bars
  • Port Forwarding — Local TCP tunnels through your SSH connection
  • SSH Key Generator — Generate Ed25519 or RSA key pairs from the GUI
  • Command Snippets — Save, edit, and run reusable command templates
  • Quick Command — Run one-off commands with output capture and export
  • Session Manager — Save, load, and organize connection profiles
  • Dual Auth — Password and SSH key authentication (with passphrase support)
  • Multi-Session Tabs — Open multiple connections in tabs, close individually
  • Settings — Configurable font, theme (dark/light), scrollback, and more
  • Session Logging — Terminal transcripts saved to ~/.os_ssh/logs/
  • Structured Logging — Rotating file + console logs for debugging
  • Cross-Platform — Runs on Windows, macOS, and Linux

Screenshot

Launch the app to see the dark-themed UI with sidebar connection panel, tabbed terminals, SFTP browser, and more.


Installation

Prerequisites

  • Python 3.10 or newer
  • pip

Steps

# Clone the repository
git clone https://github.com/os-ssh/os-ssh.git
cd os-ssh

# Install dependencies
pip install -r requirements.txt

# Run the application
python main.py

Alternative: install as a package

pip install -e .
python -m os_ssh

Usage

  1. Connect — Enter host, port, username, and password (or select a key file) in the sidebar, then click Connect.
  2. Terminal — Type commands directly in the terminal tab. Supports Ctrl+C/D/Z/L, arrow keys, Tab completion, Home/End, and full interactive shells.
  3. Find — Press Ctrl+F in the terminal to search output.
  4. SFTP — Switch to the SFTP tab to browse files. Double-click folders. Use toolbar buttons for Upload, Download, New Dir, Rename, Delete. Toggle hidden files.
  5. Quick CommandTools → Quick Command to run a standalone command. Supports command history (Up/Down) and Export.
  6. Port ForwardingTools → Port Forwarding to create local TCP tunnels.
  7. Key GeneratorTools → SSH Key Generator to create Ed25519 or RSA key pairs.
  8. SnippetsView → Snippet Manager to save, edit, and run reusable command templates.
  9. SettingsFile → Settings to configure theme, font, scrollback, and behaviour.
  10. Save Sessions — Click Save to store connection details. Double-click a saved session to load it.

Project Structure

OS SSH/
├── main.py                  # Entry point
├── requirements.txt         # Python dependencies
├── setup.py                 # Packaging (pip install -e .)
├── .gitignore
├── LICENSE
├── README.md
└── os_ssh/                  # Application package
    ├── __init__.py           # Version & metadata
    ├── __main__.py           # python -m os_ssh support
    ├── core/                 # Backend / non-GUI logic
    │   ├── __init__.py
    │   ├── ansi.py           # ANSI escape-code stripping
    │   ├── config.py         # Settings, sessions, snippets persistence
    │   ├── connection.py     # SSH connection wrapper (shell + SFTP + exec)
    │   ├── keygen.py         # SSH key-pair generation
    │   ├── logger.py         # Logging system + session transcripts
    │   └── tunnel.py         # Local port forwarding
    └── ui/                   # GUI layer (Tkinter)
        ├── __init__.py
        ├── app.py            # Main application window
        ├── dialogs.py        # Quick Command, Port Forward, KeyGen, Settings
        ├── sftp.py           # SFTP file-browser tab
        ├── sidebar.py        # Connection form + saved sessions
        ├── snippets.py       # Snippet Manager tab
        ├── terminal.py       # Interactive terminal tab
        └── theme.py          # Dark/Light theme engine

Configuration

All user data is stored in ~/.os_ssh/:

File Purpose
sessions.json Saved connection profiles
settings.json App preferences (theme, font, etc.)
snippets.json Reusable command snippets
logs/os_ssh.log Application log (rotating, 5 MB × 3)
logs/session_*.log Per-connection terminal transcripts

Keyboard Shortcuts

Shortcut Action
Ctrl+N Focus new connection
Ctrl+W Close current tab
Ctrl+F Find in terminal
Ctrl+C Send interrupt (SIGINT)
Ctrl+D Send EOF
Ctrl+Z Send SIGTSTP
Ctrl+L Clear screen
Tab Shell auto-complete
Home / End Beginning / end of line
Up / Down Shell history

Contributing

Contributions are welcome! To get started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m 'Add my feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License — see the LICENSE file for details.


Acknowledgments

  • Paramiko — SSH2 protocol library for Python
  • Tkinter — Python's built-in GUI toolkit

Built by QCVTeam with ❤️ for the open-source community.

About

A lightweight, open-source SSH client built with Python, Tkinter & Paramiko. Features interactive terminal, SFTP browser, port forwarding, key generation, command snippets, session management, and dark/light themes.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages