Skip to content

buzzqw/Python_Connection_Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

91 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

PCM โ€” Python Connection Manager

License: EUPL-1.2 Python 3.10+ GTK3 Wayland Platform Donate

L'alternativa Linux a MobaXterm โ€” tutto in una finestra: SSH, RDP, VNC, SFTP, FTP, Telnet, Mosh, Seriale.
Scritto in Python con GTK3 e terminale VTE nativo. Funziona su X11 e Wayland senza XWayland.


Versioni disponibili

Versione Cartella Framework Terminale Wayland Stato
GTK3 gtk3/ GTK3 (PyGObject) VTE nativo โœ… Nativo Sviluppo attivo
PyQt6 pyqt6/ PyQt6 xterm XWayland richiesto Solo bugfix critici

La cartella pyqt6/ contiene la versione legacy (solo bugfix critici); le nuove installazioni devono preferire GTK3.


Perchรฉ PCM?

PCM Remmina Asbru mRemoteNG
SSH con terminale integrato โœ… VTE nativo โŒ solo RDP/VNC โœ… xterm โœ…
RDP + VNC + SSH + FTP in un tool โœ… parziale โœ… โœ…
Browser SFTP/FTP integrato โœ… dual-pane โŒ parziale โŒ
Tunnel SSH grafici โœ… โŒ โœ… โŒ
Broadcast a piรน terminali โœ… โŒ โœ… cluster โŒ
KeePassXC integrato โœ… โŒ โŒ โŒ
Wayland nativo (no XWayland) โœ… parziale โŒ โŒ Linux
Password MAI sulla command line โœ… feed_child โŒ โš ๏ธ expect โ€”
Configurazione leggibile โœ… JSON XML complesso YAML XML
Licenza EUPL-1.2 GPL-2 GPL-3 GPL-2

Protocolli supportati

SSH ยท SFTP ยท FTP/FTPS ยท RDP ยท VNC ยท Telnet ยท Mosh ยท Seriale ยท Exec ยท SSH Tunnel


Funzionalitร  principali

๐Ÿ–ฅ Protocolli โ€” tutto in una finestra

Protocollo Come si apre Punti di forza
SSH Tab VTE interno o terminale esterno Jump Host, X11, Agent Forward, pre-cmd VPN, macro
SFTP Browser dual-pane integrato Drag & drop, coda trasferimenti, rinomina
FTP / FTPS Browser integrato o file manager TLS esplicito, modalitร  PASV
RDP Pannello interno o finestra esterna xfreerdp3/xfreerdp/rdesktop, multi-monitor
VNC gtk-vnc nativo o client esterno Scala, grab input, screenshot
Telnet Tab VTE interno โ€”
Mosh Tab VTE interno Resistente a disconnessioni
Seriale Tab VTE interno Baud, paritร , stop bit configurabili
Exec Tab VTE interno Qualsiasi comando shell in una scheda
SSH Tunnel Background gestito graficamente SOCKS -D, locale -L, remoto -R

๐Ÿ” Sicurezza โ€” sopra la media

  • Password mai sulla command line: PCM digita la password nel terminale VTE quando il server la richiede (feed_child), come farebbe un utente. Nessun sshpass, nessun argomento visibile in ps aux.
  • Fallback SSH_ASKPASS per OpenSSH โ‰ฅ 8.4: se SSH gestisce l'auth prima che appaia un prompt (keyboard-interactive), uno script helper temp mode 0700 passa la password silenziosamente.
  • Cifratura AES-256 (Fernet + PBKDF2-SHA256, 480k iterazioni): utenti e password in connections.json cifrati con password master. La chiave non tocca mai il disco.
  • KeePassXC integrato via Browser Protocol v2 (NaCl box): cerca e compila credenziali direttamente dal database KeePassXC aperto โ€” nessun browser necessario.
  • Modalitร  protetta: nasconde tutte le password nell'interfaccia.
  • Gestione chiavi SSH: genera, copia sul server, visualizza la chiave pubblica.
  • Agent Forwarding (-A): propaga le chiavi ssh-agent per hop multipli senza copiare le chiavi private.

๐Ÿ’ป Terminale avanzato

  • VTE nativo โ€” zero dipendenze X11, funziona su Wayland puro
  • Split verticale/orizzontale โ€” piรน sessioni affiancate nella stessa finestra
  • Temi: Dracula, Nord, Gruvbox, Solarized Dark/Light, One Dark, Monokai, Cobalt, Tomorrow Night e altri
  • Macro per sessione โ€” comandi inviati con un clic dalla sidebar
  • Broadcast terminali โ€” invia lo stesso testo a tutti i terminali selezionati contemporaneamente (ideale per cluster)
  • Multi-exec โ€” esegui un comando su piรน sessioni in sequenza
  • Log output su file per ogni sessione (con script(1))
  • Scrollback configurabile o infinito per sessione
  • Pre-comando locale: attiva VPN o monta volume prima di aprire la connessione

๐Ÿ“ Gestione sessioni

  • Organizzate per gruppo con barra di ricerca live
  • Sezione Recenti in cima alla sidebar: ultime 20 sessioni con timestamp
  • Quick Connect: utente@host:porta dalla toolbar โ€” si connette senza salvare un profilo
  • Doppio clic per connettere, tasto destro per menu contestuale ricco
  • Ping TCP dalla sidebar โ€” verifica raggiungibilitร  sulla porta configurata (ms)
  • Duplica, modifica, elimina, esporta script .sh per riaprire da terminale
  • Import da: Remmina (.remmina), Remote Desktop Manager (.rdm/.json), PuTTY (~/.putty/sessions/), ~/.ssh/config

๐Ÿ›  Strumenti integrati

  • Tunnel SSH grafici โ€” avvia, ferma, monitora tunnel in background
  • Server FTP locale (pyftpdlib) โ€” espone una cartella locale via FTP/FTPS in un clic
  • Variabili globali {NOME} โ€” riutilizzabili nei comandi di tutte le sessioni
  • Wake-on-LAN โ€” invia magic packet prima di connettersi
  • Audit log โ€” storico connessioni con timestamp, durata, protocollo, stato; esportabile CSV
  • Verifica dipendenze โ€” controlla automaticamente quali tool sono installati

๐ŸŒ Internazionalizzazione

5 lingue complete: ๐Ÿ‡ฎ๐Ÿ‡น Italiano ยท ๐Ÿ‡ฌ๐Ÿ‡ง English ยท ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch ยท ๐Ÿ‡ซ๐Ÿ‡ท Franรงais ยท ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol
Cambio lingua immediato dalle impostazioni senza riavvio.


Screenshot โ€” Versione GTK3 (sviluppo attivo)


Finestra principale: sidebar gruppi, sezione Recenti, quick connect

Sessione SSH: host, porta, WoL integrato, pulsante KeePassXC

Autenticazione avanzata: chiavi SSH, Jump Host, Agent Forwarding

Browser SFTP dual-pane integrato โ€” stile WinSCP

Sessione RDP: multi-monitor, clipboard, client selezionabile

Browser FTP/FTPS dual-pane con coda trasferimenti

Quick Connect โ€” connessione rapida senza salvare il profilo

Menu applicazione: Tunnel Manager, Broadcast, KeePassXC, Audit log e altri strumenti

Dialogo nuova sessione โ€” SSH

SSH Connection GTK3 SSH Terminal GTK3
Tab Connessione SSH โ€” host, porta, utente, gestione chiavi SSH (genera ed25519/RSA, copia sul server, mostra pubblica), integrazione KeePassXC Tab Terminale โ€” tema, font, dimensione, scrollback, log su file, incolla con tasto destro, modalitร  apertura SSH/SFTP
SSH Advanced GTK3 SSH Tunnel tab GTK3
Tab Avanzate โ€” X11 forwarding, compressione, keepalive, strict host, SFTP browser automatico, Agent Forwarding (-A), startup command, jump host, Wake-on-LAN Tab Tunnel โ€” configurazione SOCKS proxy (-D) o port forwarding direttamente nella sessione

Dialogo nuova sessione โ€” RDP

RDP Connection GTK3 RDP Advanced GTK3
Tab Connessione RDP โ€” host, porta 3389, utente, password Tab Avanzate RDP โ€” client xfreerdp3, autenticazione NTLM/Kerberos, dominio, fullscreen, clipboard, cartelle locali, Wake-on-LAN, pre-comando locale

Dialogo nuova sessione โ€” VNC e Seriale

VNC Advanced GTK3 Serial GTK3
Tab Avanzate VNC โ€” apertura con gtk-vnc integrato o client esterno, profonditร  colore, qualitร , Wake-on-LAN, pre-comando locale Connessione Seriale โ€” device (/dev/ttyUSB0), baud rate, data bit, parity, stop bit

SSH Tunnel Manager e sblocco credenziali

SSH Tunnel Manager GTK3 Unlock Credentials GTK3
SSH Tunnel Manager โ€” elenco tunnel con tipo, host, porte, stato; pulsanti Add/Edit/Delete/Start/Stop; log output integrato Sblocco credenziali โ€” master password per decifrare le credenziali salvate (AES-256)

Installazione

GTK3 โ€” versione raccomandata

Automatica

git clone https://github.com/buzzqw/Python_Connection_Manager.git
cd Python_Connection_Manager
bash setup.sh

Lo script rileva la distribuzione (Debian/Ubuntu, Arch, Fedora, openSUSE, FreeBSD) e installa tutte le dipendenze di sistema e Python. Crea anche un launcher .desktop nel menu applicazioni.

# Solo verifica dipendenze, senza installare:
bash setup.sh --check

Avvio

cd Python_Connection_Manager/gtk3
python3 PCM.py

Al primo avvio PCM crea connections.json con sessioni di esempio e propone di abilitare la cifratura AES-256 delle credenziali.

Manuale per distribuzione

Debian / Ubuntu / Linux Mint
sudo apt install \
    python3 python3-gi python3-gi-cairo \
    gir1.2-gtk-3.0 gir1.2-vte-2.91 gir1.2-gtkvnc-2.0 \
    openssh-client freerdp3-x11 tigervnc-viewer \
    xdotool xdg-utils wakeonlan

pip install --user cryptography paramiko pyftpdlib
Arch Linux
sudo pacman -Sy --needed \
    python python-gobject gtk3 vte3 gtk-vnc \
    openssh freerdp tigervnc xdotool xdg-utils wol \
    python-cryptography python-paramiko python-pyftpdlib
Fedora
sudo dnf install \
    python3-gobject gtk3 vte291 gtk-vnc2 \
    openssh-clients freerdp tigervnc xdotool xdg-utils

pip install --user cryptography paramiko pyftpdlib
openSUSE
sudo zypper install \
    python3-gobject typelib-1_0-Gtk-3_0 \
    typelib-1_0-Vte-2.91 typelib-1_0-GtkVnc-2_0 \
    openssh freerdp tigervnc xdotool xdg-utils

pip install --user cryptography paramiko pyftpdlib
FreeBSD
sudo pkg install \
    python3 py311-gobject gtk3 vte3 gtk-vnc \
    mosh freerdp3 tigervnc-viewer xdotool wakeonlan \
    py311-cryptography py311-paramiko py311-pyftpdlib

PyQt6 โ€” versione legacy

Riceve solo bugfix critici. Istruzioni di installazione in pyqt6/README.md.


Dipendenze opzionali

Pacchetto Funzionalitร  abilitata
gir1.2-gtkvnc-2.0 / gtk-vnc VNC integrato nativo (raccomandato)
tigervnc-viewer / xtightvncviewer VNC via client esterno (fallback)
freerdp3-x11 / xfreerdp RDP
mosh Connessioni Mosh
picocom / minicom Porte seriali
xdotool RDP in pannello interno (richiede XWayland)
wakeonlan / wol Wake-on-LAN
keepassxc Integrazione KeePassXC
pynacl Cifratura protocollo KeePassXC Browser v2

Note Wayland

GTK3 + VTE funzionano nativamente su Wayland senza XWayland.

L'unica eccezione รจ la modalitร  RDP pannello interno (embedding xfreerdp tramite xdotool) che richiede XWayland. Per uso Wayland puro, impostare RDP su "Finestra esterna".

Il viewer VNC gtk-vnc funziona nativamente su Wayland.


File di configurazione

File Contenuto
gtk3/connections.json Profili sessione โ€” JSON leggibile, modificabile a mano
gtk3/pcm_settings.json Impostazioni globali, scorciatoie, sessioni recenti
gtk3/audit_log.json Log audit connessioni (solo metadata, nessuna credenziale)
/tmp/pcm_logs/ Log output terminali, percorso configurabile

Supporta il progetto

Se PCM ti รจ utile e vuoi ringraziare lo sviluppatore, puoi offrire un caffรจ tramite PayPal. Ogni contributo รจ molto apprezzato e aiuta a mantenere il progetto attivo!

Dona con PayPal

Grazie mille!


Autore

Andres Zanzani โ€” licenza EUPL-1.2

GitHub



PCM โ€” Python Connection Manager ๐Ÿ‡ฌ๐Ÿ‡ง

The Linux alternative to MobaXterm โ€” everything in one window: SSH, RDP, VNC, SFTP, FTP, Telnet, Mosh, Serial.
Written in Python with GTK3 and native VTE terminal. Works on X11 and Wayland without XWayland.


Available versions

Version Folder Framework Terminal Wayland Status
GTK3 gtk3/ GTK3 (PyGObject) Native VTE โœ… Native Active development
PyQt6 pyqt6/ PyQt6 xterm XWayland required Critical bugfixes only

The pyqt6/ folder contains the legacy version (critical bugfixes only); new installations should prefer GTK3.


Why PCM?

PCM Remmina Asbru mRemoteNG
SSH with integrated terminal โœ… Native VTE โŒ RDP/VNC only โœ… xterm โœ…
RDP + VNC + SSH + FTP in one tool โœ… partial โœ… โœ…
Integrated SFTP/FTP browser โœ… dual-pane โŒ partial โŒ
Graphical SSH tunnels โœ… โŒ โœ… โŒ
Broadcast to multiple terminals โœ… โŒ โœ… cluster โŒ
KeePassXC integration โœ… โŒ โŒ โŒ
Native Wayland (no XWayland) โœ… partial โŒ โŒ Linux
Password NEVER on command line โœ… feed_child โŒ โš ๏ธ expect โ€”
Human-readable config โœ… JSON complex XML YAML XML
License EUPL-1.2 GPL-2 GPL-3 GPL-2

Supported protocols

SSH ยท SFTP ยท FTP/FTPS ยท RDP ยท VNC ยท Telnet ยท Mosh ยท Serial ยท Exec ยท SSH Tunnel


Key features

๐Ÿ–ฅ Protocols โ€” everything in one window

Protocol How it opens Strengths
SSH Internal VTE tab or external terminal Jump Host, X11, Agent Forward, VPN pre-cmd, macros
SFTP Integrated dual-pane browser Drag & drop, transfer queue, rename
FTP / FTPS Integrated browser or file manager Explicit TLS, PASV mode
RDP Internal panel or external window xfreerdp3/xfreerdp/rdesktop, multi-monitor
VNC Native gtk-vnc or external client Scale, grab input, screenshot
Telnet Internal VTE tab โ€”
Mosh Internal VTE tab Resilient to disconnections
Serial Internal VTE tab Baud, parity, stop bits configurable
Exec Internal VTE tab Any shell command in a tab
SSH Tunnel Background, managed graphically SOCKS -D, local -L, remote -R

๐Ÿ” Security โ€” above average

  • Password never on command line: PCM types the password into the VTE terminal when the server asks for it (feed_child), just like a user would. No sshpass, nothing visible in ps aux.
  • SSH_ASKPASS fallback for OpenSSH โ‰ฅ 8.4: if SSH handles auth before a prompt appears (keyboard-interactive), a temp helper script (mode 0700) passes the password silently.
  • AES-256 encryption (Fernet + PBKDF2-SHA256, 480k iterations): usernames and passwords in connections.json encrypted with a master password. The key never touches the disk.
  • KeePassXC integration via Browser Protocol v2 (NaCl box): find and fill credentials directly from the open KeePassXC database โ€” no browser needed.
  • Protected mode: hides all passwords in the interface.
  • SSH key management: generate, copy to server, display public key.
  • Agent Forwarding (-A): propagates ssh-agent keys for multiple hops without copying private keys.

๐Ÿ’ป Advanced terminal

  • Native VTE โ€” zero X11 dependencies, works on pure Wayland
  • Vertical/horizontal split โ€” multiple sessions side by side in one window
  • Themes: Dracula, Nord, Gruvbox, Solarized Dark/Light, One Dark, Monokai, Cobalt, Tomorrow Night and more
  • Per-session macros โ€” commands sent with one click from the sidebar
  • Terminal broadcast โ€” send the same text to all selected terminals simultaneously (ideal for clusters)
  • Multi-exec โ€” run a command across multiple sessions in sequence
  • File output logging per session (via script(1))
  • Configurable or infinite scrollback per session
  • Local pre-command: activate VPN or mount volume before opening the connection

๐Ÿ“ Session management

  • Organized by group with live search bar
  • Recent sessions section at the top of the sidebar: last 20 sessions with timestamps
  • Quick Connect: user@host:port from the toolbar โ€” connects without saving a profile
  • Double-click to connect, right-click for rich context menu
  • TCP Ping from the sidebar โ€” checks reachability on the configured port (ms)
  • Duplicate, edit, delete, export .sh script to reopen from terminal
  • Import from: Remmina (.remmina), Remote Desktop Manager (.rdm/.json), PuTTY (~/.putty/sessions/), ~/.ssh/config

๐Ÿ›  Integrated tools

  • Graphical SSH tunnels โ€” start, stop, monitor background tunnels
  • Local FTP server (pyftpdlib) โ€” expose a local folder via FTP/FTPS in one click
  • Global variables {NAME} โ€” reusable in commands across all sessions
  • Wake-on-LAN โ€” sends magic packet before connecting
  • Audit log โ€” connection history with timestamp, duration, protocol, status; exportable to CSV
  • Dependency checker โ€” automatically checks which tools are installed

๐ŸŒ Internationalization

5 complete languages: ๐Ÿ‡ฎ๐Ÿ‡น Italiano ยท ๐Ÿ‡ฌ๐Ÿ‡ง English ยท ๐Ÿ‡ฉ๐Ÿ‡ช Deutsch ยท ๐Ÿ‡ซ๐Ÿ‡ท Franรงais ยท ๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol
Instant language change from settings without restart.


Screenshots โ€” GTK3 version (active development)


Main window: group sidebar, Recent section, quick connect

SSH session: host, port, integrated WoL, KeePassXC button

Advanced authentication: SSH keys, Jump Host, Agent Forwarding

Integrated SFTP dual-pane browser โ€” WinSCP style

RDP session: multi-monitor, clipboard, selectable client

FTP/FTPS dual-pane browser with transfer queue

Quick Connect โ€” instant connection without saving a profile

Application menu: Tunnel Manager, Broadcast, KeePassXC, Audit log and more

New session dialog โ€” SSH

SSH Connection GTK3 SSH Terminal GTK3
Connection tab โ€” host, port, user, SSH key management (generate ed25519/RSA, copy to server, show public key), KeePassXC integration Terminal tab โ€” theme, font, size, scrollback, file logging, paste with right-click, SSH/SFTP open mode
SSH Advanced GTK3 SSH Tunnel tab GTK3
Advanced tab โ€” X11 forwarding, compression, keepalive, strict host, auto-open SFTP browser, Agent Forwarding (-A), startup command, jump host, Wake-on-LAN Tunnel tab โ€” SOCKS proxy (-D) or port forwarding configured directly inside the session

New session dialog โ€” RDP

RDP Connection GTK3 RDP Advanced GTK3
Connection tab โ€” host, port 3389, user, password Advanced tab โ€” xfreerdp3 client, NTLM/Kerberos auth, domain, fullscreen, clipboard, local folders, Wake-on-LAN, local pre-command

New session dialog โ€” VNC and Serial

VNC Advanced GTK3 Serial GTK3
VNC Advanced tab โ€” open with embedded gtk-vnc or external client, color depth, quality, Wake-on-LAN, local pre-command Serial connection โ€” device (/dev/ttyUSB0), baud rate, data bits, parity, stop bits

SSH Tunnel Manager and credential unlock

SSH Tunnel Manager GTK3 Unlock Credentials GTK3
SSH Tunnel Manager โ€” tunnel list with type, host, ports, status; Add/Edit/Delete/Start/Stop buttons; integrated output log Credential unlock โ€” master password to decrypt saved credentials (AES-256)

Quick install (GTK3 โ€” recommended)

git clone https://github.com/buzzqw/Python_Connection_Manager.git
cd Python_Connection_Manager
bash setup.sh
cd gtk3
python3 PCM.py

The setup.sh script detects the distribution and installs system dependencies (GTK3, VTE, gtk-vnc) and Python packages (paramiko, cryptography, pyftpdlib). It also creates a .desktop launcher in the application menu.

# Check dependencies only, without installing:
bash setup.sh --check

Manual install by distribution

Debian / Ubuntu / Linux Mint
sudo apt install \
    python3 python3-gi python3-gi-cairo \
    gir1.2-gtk-3.0 gir1.2-vte-2.91 gir1.2-gtkvnc-2.0 \
    openssh-client freerdp3-x11 tigervnc-viewer \
    xdotool xdg-utils wakeonlan

pip install --user cryptography paramiko pyftpdlib
Arch Linux
sudo pacman -Sy --needed \
    python python-gobject gtk3 vte3 gtk-vnc \
    openssh freerdp tigervnc xdotool xdg-utils wol \
    python-cryptography python-paramiko python-pyftpdlib
Fedora
sudo dnf install \
    python3-gobject gtk3 vte291 gtk-vnc2 \
    openssh-clients freerdp tigervnc xdotool xdg-utils

pip install --user cryptography paramiko pyftpdlib
openSUSE
sudo zypper install \
    python3-gobject typelib-1_0-Gtk-3_0 \
    typelib-1_0-Vte-2.91 typelib-1_0-GtkVnc-2_0 \
    openssh freerdp tigervnc xdotool xdg-utils

pip install --user cryptography paramiko pyftpdlib
FreeBSD
sudo pkg install \
    python3 py311-gobject gtk3 vte3 gtk-vnc \
    mosh freerdp3 tigervnc-viewer xdotool wakeonlan \
    py311-cryptography py311-paramiko py311-pyftpdlib

PyQt6 โ€” legacy version

Critical bugfixes only. See pyqt6/README.md for installation instructions.


Optional dependencies

Package Feature enabled
gir1.2-gtkvnc-2.0 / gtk-vnc Native embedded VNC (recommended)
tigervnc-viewer / xtightvncviewer VNC via external client (fallback)
freerdp3-x11 / xfreerdp RDP
mosh Mosh connections
picocom / minicom Serial ports
xdotool RDP in internal panel (requires XWayland)
wakeonlan / wol Wake-on-LAN
keepassxc KeePassXC integration
pynacl KeePassXC Browser Protocol v2 encryption

Wayland notes

GTK3 + VTE work natively on Wayland without XWayland.

The only exception is the RDP internal panel mode (embedding xfreerdp via xdotool), which requires XWayland. For pure Wayland use, set RDP to "External window".

The gtk-vnc VNC viewer works natively on Wayland.


Configuration files

File Contents
gtk3/connections.json Session profiles โ€” human-readable JSON, editable by hand
gtk3/pcm_settings.json Global settings, shortcuts, recent sessions
gtk3/audit_log.json Connection audit log (metadata only, no credentials)
/tmp/pcm_logs/ Terminal output logs, path configurable

Support the project

If you find PCM useful and want to thank the developer, you can buy him a coffee via PayPal. Any contribution is greatly appreciated and helps keep the project alive!

Donate with PayPal

Thank you so much!


Author

Andres Zanzani โ€” license EUPL-1.2

GitHub