{"library":"types-paramiko","title":"Typing Stubs for Paramiko","description":"types-paramiko provides static type checking stubs for the Paramiko SSH library. It allows type checkers like Mypy and Pyright to analyze code that uses `paramiko` for better IDE support, type inference, and catching type-related errors before runtime. This package is part of the Typeshed project, aims to provide accurate annotations for `paramiko==4.0.*`, and is updated frequently, sometimes daily.","language":"python","status":"active","last_verified":"Wed May 20","install":{"commands":["pip install types-paramiko paramiko"],"cli":null},"imports":["import paramiko\nclient = paramiko.SSHClient()","import paramiko\ntransport = paramiko.Transport(...)","import paramiko\nkey = paramiko.PKey()"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import paramiko\nimport os\nimport sys\n\ndef ssh_connect_and_execute(\n    hostname: str,\n    username: str,\n    command: str,\n    password: str = None,\n    port: int = 22\n) -> str:\n    client = paramiko.SSHClient()\n    # Automatically add new host keys (use with caution in production)\n    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n    \n    try:\n        # Load system host keys by default\n        client.load_system_host_keys()\n        \n        if password:\n            client.connect(hostname, port=port, username=username, password=password, timeout=10)\n        else:\n            # Assumes an SSH agent is running or keys are in default locations\n            client.connect(hostname, port=port, username=username, timeout=10)\n\n        # Execute a command\n        stdin, stdout, stderr = client.exec_command(command)\n        output = stdout.read().decode().strip()\n        error = stderr.read().decode().strip()\n        \n        if error:\n            print(f\"Error executing command: {error}\", file=sys.stderr)\n            return \"\"\n        return output\n    except paramiko.AuthenticationException:\n        print(\"Authentication failed, please verify your credentials (username/password/keys).\", file=sys.stderr)\n        return \"\"\n    except paramiko.SSHException as e:\n        print(f\"SSH connection or command execution failed: {e}\", file=sys.stderr)\n        return \"\"\n    except Exception as e:\n        print(f\"An unexpected error occurred: {e}\", file=sys.stderr)\n        return \"\"\n    finally:\n        # Always close the client connection to prevent resource leaks\n        if client:\n            client.close()\n\nif __name__ == \"__main__\":\n    # Example usage with environment variables\n    HOST = os.environ.get(\"SSH_HOST\", \"your_ssh_server.com\")\n    USER = os.environ.get(\"SSH_USER\", \"your_username\")\n    PASS = os.environ.get(\"SSH_PASSWORD\", \"\") # Use SSH keys whenever possible\n    CMD = os.environ.get(\"SSH_COMMAND\", \"echo Hello from Paramiko!\")\n    PORT = int(os.environ.get(\"SSH_PORT\", 22))\n\n    if HOST == \"your_ssh_server.com\":\n        print(\"Please set SSH_HOST, SSH_USER, and optionally SSH_PASSWORD/SSH_PORT environment variables.\", file=sys.stderr)\n        sys.exit(1)\n\n    print(f\"Attempting to connect to {USER}@{HOST}:{PORT} and execute '{CMD}'\")\n    result = ssh_connect_and_execute(HOST, USER, CMD, PASS if PASS else None, PORT)\n    if result:\n        print(\"\\n--- Command Output ---\")\n        print(result)\n    else:\n        print(\"\\n--- Command execution failed ---\", file=sys.stderr)","lang":"python","description":"This quickstart demonstrates a basic SSH connection and command execution using Paramiko. With `types-paramiko` installed, a type checker can provide static analysis for the Paramiko calls and type hints in this code.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","last_tested":"2026-05-20","installed_version":"4.0.0.20250822","pypi_latest":"4.0.0.20260518","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.8,"avg_import_s":0.81,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.58,"mem_mb":13.1,"disk_size":"42.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.63,"mem_mb":13,"disk_size":"41.1M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.41,"mem_mb":13.1,"disk_size":"42M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.42,"mem_mb":13,"disk_size":"41M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.84,"mem_mb":14.5,"disk_size":"44.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.93,"mem_mb":14.4,"disk_size":"43.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.7,"import_time_s":0.74,"mem_mb":14.5,"disk_size":"45M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.73,"mem_mb":14.4,"disk_size":"44M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.03,"mem_mb":14.6,"disk_size":"36.4M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.1,"mem_mb":14.5,"disk_size":"35.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":1.05,"mem_mb":14.6,"disk_size":"37M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.08,"mem_mb":14.5,"disk_size":"36M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.02,"mem_mb":15.5,"disk_size":"36.1M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.07,"mem_mb":15.3,"disk_size":"35.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":1,"mem_mb":15.5,"disk_size":"36M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.24,"mem_mb":15.3,"disk_size":"35M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.55,"mem_mb":12.7,"disk_size":"42.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.58,"mem_mb":12.5,"disk_size":"41.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.56,"mem_mb":12.7,"disk_size":"43M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"types-paramiko","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.54,"mem_mb":12.5,"disk_size":"42M"}]}}