Skip to main content

Interactive CLI to connect to AWS EC2 and RDS via SSM or SSH-over-SSM, with credential persistence and multi-session support.

Project description

ssm-connect

Interactive CLI to connect to AWS EC2 instances and RDS databases via:

  • SSM Session Manager (interactive shell)
  • SSH over SSM (with your SSH key)
  • RDS Port Forwarding (via EC2 bastion host)
  • File Transfer (SCP) (Securely upload/download files)

Multiple sessions in parallel (each opens in a new terminal). Keyword search across Name, Instance ID, and all tag values. Simple, cross-platform, and secure-by-default.

Features

  • Target Selection: Choose to connect to EC2 instances or RDS databases
  • EC2 Connections:
    • SSM Session Manager (interactive shell)
    • SSH over SSM (with private key authentication)
    • SSH ProxyJump (Connect to target host via bastion)
  • RDS Connections:
    • Port forwarding to RDS databases via EC2 bastion host
    • Auto-selects available local port
  • Customization:
    • Support for custom SSM Documents via -d / --document-name flag
  • File Transfer:
    • Upload/Download files to/from EC2 instances using SCP
    • Uses existing SSH key configuration
  • Smart Search: Filter instances by keywords (matches Name, InstanceId, and all tag values)
  • Multi-Session: Opens each connection in a new terminal window (Linux, macOS, Windows) allowing for multiple simultaneous sessions.
  • AWS Session: Automatically inherits AWS credentials
  • Security: Automated scanning via CodeQL, Gitleaks and Pip-Audit on every PR

Install

Latest release from PyPI: pip install --upgrade ssm-connect

Run the tool: ssm-connect

Requirements

  • User should already be logged in to AWS
  • AWS CLI v2
  • SSM Session Manager plugin (installation guide)
  • OpenSSH client (ssh command) - for SSH over SSM
  • Python 3.8+
  • Appropriate IAM role
  • SSH Agent (optional but recommended): Ensure ssh-agent is running to avoid repeated passphrase prompts.

Terminal Apps

The tool automatically detects and uses available terminal emulators:

  • Windows: Windows Terminal (wt), PowerShell, or cmd
  • macOS: Terminal.app
  • Linux: gnome-terminal, konsole, xterm, or x-terminal-emulator

Usage

Start the CLI: ssm-connect

Connection Flow

  1. Choose Target Type:

    • [1] EC2 - Connect directly to an EC2 instance
    • [2] RDS - Forward port to an RDS database via bastion
    • [3] File Transfer - Securely upload/download files
    • [4] Favorites - Quick connect to saved aliases

    Global Option:

    • -d "MyDoc" / --document-name "MyDoc": Override the default SSM document used for the connection.
  2. For EC2 Connections:

    • Choose connection type:
      • [1] SSM - Interactive shell via Session Manager
      • [2] SSH over SSM - SSH session with your private key
      • [3] SSH ProxyJump - Connect to remote host via this instance
    • Filter and select target EC2 instance
    • For SSH: Provide private key path and username
    • For ProxyJump: Select target from list (auto-resolves IP) or enter manually
  3. For RDS Connections:

    • Step 1: Select EC2 bastion instance (must have SSM access)
    • Step 2: Select target RDS database
    • Connect to localhost:[auto-selected-port] with your database client
  4. For File Transfer (SCP):

    • Select remote instance
    • Choose direction (Upload / Download)
    • Specify local and remote file paths
    • Tool handles the secure copy tunneling
  5. Favorites & Aliases:

    • Save: After any connection, answer y to "Save this connection as a favorite?"
    • Connect:
      • Select [4] Favorites from menu, OR
      • Use CLI: ssm-connect -f <alias> (e.g., ssm-connect -f prod-db)
      • Override document: ssm-connect -f prod-db -d "OverridesSavedDoc"

Alternate Execution

If you cannot modify your PATH or access the Scripts folder, you can run the tool as a Python module:

python -m ssm_connect

Troubleshooting

Command not found

Ensure aws, session-manager-plugin, and ssh are installed and on PATH.

SSO expired

Refresh your AWS SSO session: aws sso login --profile your-profile

SSH key errors

Ensure the key exists and has proper permissions

No terminal found (Linux)

Install a terminal emulator

RDS connection refused

Ensure:

  • The bastion EC2 instance has network connectivity to the RDS
  • The bastion is running
  • You have the appropriate role

Uninstall

pip uninstall ssm-connect

Security

Automated Security Checks

All pull requests and merges undergo automated security analysis to ensure code quality and safety:

  • CodeQL: Static code analysis for security vulnerabilities and unsafe coding patterns.
  • Gitleaks: Scans for hardcoded secrets and credentials to prevent leaks.
  • Pip-Audit: Scans Python dependencies for known security vulnerabilities.

Reporting Security Issues

If you discover a security vulnerability, please report it privately via GitHub's Security Advisory feature rather than opening a public issue.

Contributing

Issues and pull requests are welcome. Please keep changes focused and include brief notes if behavior changes.

License

Apache License 2.0. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ssm_connect-1.5.1.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ssm_connect-1.5.1-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file ssm_connect-1.5.1.tar.gz.

File metadata

  • Download URL: ssm_connect-1.5.1.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ssm_connect-1.5.1.tar.gz
Algorithm Hash digest
SHA256 4ed7fd5874a4d949a265356a59c9aeb62a3fdb6f761c1e9eaf01360b91142a9f
MD5 7ab3ee58454ae1cf388764b2cfd9aec0
BLAKE2b-256 c14b04f48575442652572d5913b89936d5bff5b05f12954d85a0ded3b4460066

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssm_connect-1.5.1.tar.gz:

Publisher: publish.yml on JoseSiby/ssm-connect

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ssm_connect-1.5.1-py3-none-any.whl.

File metadata

  • Download URL: ssm_connect-1.5.1-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ssm_connect-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a950d298a7f013c933b3aa239e217e829d14c5bf4b38a8193f81bfd629e1c356
MD5 c5f43f3c3915e784bf39ac0981c72cbd
BLAKE2b-256 df470c84def53c3c0bf70f83605ffec834316a0e55dc17186d55be40acfbbb1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ssm_connect-1.5.1-py3-none-any.whl:

Publisher: publish.yml on JoseSiby/ssm-connect

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page