Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6997477
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T20:17:18+00:00 2026-05-27T20:17:18+00:00

I am trying to connect to a remote MySql server from my local machine.

  • 0

I am trying to connect to a remote MySql server from my local machine.
I want to run it whenever the DEBUG constant is set to true.

Here’s the script:

import select
import SocketServer
import sys
import threading
import paramiko

SSH_PORT = 22
DEFAULT_PORT = 4000

g_verbose = True


class ForwardServer (SocketServer.ThreadingTCPServer):
    daemon_threads = True
    allow_reuse_address = True


class Handler (SocketServer.BaseRequestHandler):

    def handle(self):
        try:
            chan = self.ssh_transport.open_channel('direct-tcpip',
                                                   (self.chain_host, self.chain_port),
                                                   self.request.getpeername())
        except Exception, e:
            verbose('Incoming request to %s:%d failed: %s' % (self.chain_host,
                                                              self.chain_port,
                                                              repr(e)))
            return
        if chan is None:
            verbose('Incoming request to %s:%d was rejected by the SSH server.' %
                    (self.chain_host, self.chain_port))
            return

        verbose('Connected!  Tunnel open %r -> %r -> %r' % (self.request.getpeername(),
                                                            chan.getpeername(), (self.chain_host, self.chain_port)))
        while True:
            r, w, x = select.select([self.request, chan], [], [])
            if self.request in r:
                data = self.request.recv(1024)
                if len(data) == 0:
                    break
                chan.send(data)
            if chan in r:
                data = chan.recv(1024)
                if len(data) == 0:
                    break
                self.request.send(data)
        chan.close()
        self.request.close()
        verbose('Tunnel closed from %r' % (self.request.getpeername(),))


def forward_tunnel(local_port, remote_host, remote_port, transport):
    # this is a little convoluted, but lets me configure things for the Handler
    # object.  (SocketServer doesn't give Handlers any way to access the outer
    # server normally.)
    class SubHander (Handler):
        chain_host = remote_host
        chain_port = remote_port
        ssh_transport = transport
    ForwardServer(('', local_port), SubHander).serve_forever()


def verbose(s):
    if g_verbose:
        print s


HELP = """\
Set up a forward tunnel across an SSH server, using paramiko. A local port
(given with -p) is forwarded across an SSH session to an address:port from
the SSH server. This is similar to the openssh -L option.
"""

def forward():
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.WarningPolicy())

    try:
        print 'connecting'

        client.connect('*******', username='***', password='****!')

        print 'connected'
    except Exception, e:
        print '*** Failed to connect to %s:%d: %r' % ('*****', 22, e)
        sys.exit(1)

    try:
        forward_tunnel(3306, '127.0.0.1', 3306, client.get_transport())
    except SystemExit:
        print 'C-c: Port forwarding stopped.'
        sys.exit(0)

I have two problems here:
1) I don’t know how and when to call my forward function when django raises.
2) When I access django locally and run the script from the console I get the following exception:

exception happened during
processing of request from
(‘127.0.0.1’, 41872) Traceback (most
recent call last): File
“/usr/lib/python2.6/SocketServer.py”,
line 558, in process_request_thread
self.finish_request(request, client_address) File
“/usr/lib/python2.6/SocketServer.py”,
line 320, in finish_request
self.RequestHandlerClass(request, client_address, self) File
“/usr/lib/python2.6/SocketServer.py”,
line 615, in init
self.handle() File “/home/omer/Aptana Studio 3
Workspace/Website/src/ssh_tunnel/tunnel.py”,
line 51, in handle
verbose(‘Tunnel closed from %r’ % (self.request.getpeername(),)) File
“”, line 1, in getpeername
File “/usr/lib/python2.6/socket.py”,
line 165, in _dummy
raise error(EBADF, ‘Bad file descriptor’) error: [Errno 9] Bad file
descriptor

Was this a bad idea to begin with?
Should I do this manually every time?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T20:17:19+00:00Added an answer on May 27, 2026 at 8:17 pm

    I don’t think it’s a bad idea.

    I don’t think you need to do it manually.

    The exception is a bug in paramiko’s forward code sample. This has been addressed by jhalcrow in the pull request here:

    https://github.com/paramiko/paramiko/pull/36

    This post has some code to do it in a more event driven way, i.e if you wanted to call it via some web event hooks in your django code or the like:

    Paramiko SSH Tunnel Shutdown Issue

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm trying to run mysql queries from a remote server (server B) and then
I am trying to connect to a remote mysql database from an iPhone. I
I am trying to connect to my mysql database on a remote server (via
I'm trying to connect to a remote MySQL server via SSH in my Java
I am trying to connect to a remote MySQL database using Visual C# 2008
So, I'm using MySQL Query Browser to connect to a remote mysql server and
I am trying to run mysqli on my remote windows server and I keep
I am trying to connect remote mysql i am having typical issue. $conn =
I am trying to connect to a remote mysql database but I get the
I am trying to connect to a remote mysql database using django. The documentation

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.