Ich konnte mich verbinden mit:
tunnel = sshtunnel.SSHTunnelForwarder((ssh_host, 22), ssh_password=ssh_password, ssh_username=ssh_username,
remote_bind_address=('localhost', 3306))
tunnel.start()
Anscheinend bestand der Unterschied darin, den Tunnel offen zu halten, anstatt die 'with'-Anweisung zu verwenden, obwohl ich nicht verstehe, was tatsächlich passiert ist, und ich würde mich über eine Erklärung freuen.