ssh tunnel aufbauen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Ich habe ja ne Zeit lang mal mit dem Modul Paramiko rumgespielt und damit, remote auf einen SSH-Server zugegriffen und dort Befehle gestartet. Jetzt habe ich mal eine Frage zum SSH-Tunnel.
Ich nutze einen mySQL-Server, den ich natürlich nicht im Router nach außen hin öffen möchte. Ich würde gant gerne den mySQL-Port über die SSH tunneln um auf den mySQL-Server von außen drauf zu greifen zu können. Da ich Linux nutze, kann ich natürlich mir mal schnell einen Port über die Konsole tunneln. Die Software soll aber auch unter Windows laufen.
Meine Frage ist einfach, kann ich unter Python und vielleicht Paramiko einen SSH-Tunnel aufbauen? Oder gibt es da eine andere Lösung für?
lunar

@The Hit-Man: Wirf mal einen scharfen Blick auf die Beispiele von Paramiko, insbesondere auf forward.py :)
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

genau. Das sieht doch schon mal echt gut aus. Danke
Ist ja nen kompletter Tunnel.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

hmmmm, ich versuche immer noch einen Tunnel, mit paramiko aufzubauen. Aber irgendwie bekomme ich immer eine Fehlermeldung wenn ich den Tunnel benutzen will ...
Die Meldung sieht so aus:

Code: Alles auswählen

Connecting to ssh host htm-network.dyndns.org:22 ...
Now forwarding port 80 to 127.0.0.1:80 ...
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Incoming request to 127.0.0.1:80 failed: ChannelException('Administratively prohibited',)
Ich versuche einfach den Port 80 vom Server auf meinen Rechner zu tunneln. Der Code sieht so aus:

Code: Alles auswählen

def makeTunnel (username, password, server, local, port, keyfile):   
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.load_system_host_keys (keyfile)

    verbose('Connecting to ssh host %s:%d ...' % (server, 22))
    try:
        client.connect(server, 22, username=username, password=password)
    except Exception, e:
        print '*** Failed to connect to %s:%d: %r' % (server, port, e)
        sys.exit(1)

    verbose('Now forwarding port %d to %s:%d ...' % (port, local, port))
    
    try:
        forward_tunnel(port, local, port, client.get_transport())
    except KeyboardInterrupt:
        print 'C-c: Port forwarding stopped.'
        os.unlink(pidfile)
        sys.exit(0)
Es scheint so, als würde der Port wirklich getunnelt. Das ganze starte ich unter root. Nur wenn ich dann mit dem Webbrowser auf 127.0.0.1:80 zugreifen will, bekomme ich eben diese Fehlermeldung ( in der Konsole ).
Hat jemand eine Ahnung, woher das kommt? Unter google habe ich keine Hilfe gefunden.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Oh man, ich habe den Fehler gefunden. Hatte nur Server und Client vertauscht :(
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Nun habe ich das nächste Problem :( Meinen Webserver kann ich ohne Probleme tunneln. Ich wollte aber den Samba Port 445 tunneln. Starte ich mein Programm, wird der Tunnel aufgebaut. Mache ich dann ein telnet auf 127.0.0.1 1445, bricht der Tunnel zusammen und bekomme diese Meldung:

Code: Alles auswählen

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Connection closed by foreign host.

Code: Alles auswählen

versuche Tunnel aufzubauen ...
Connecting to ssh host htm-network.dyndns.org:22 ...
Now forwarding from port 445 to 127.0.0.1:1445 ...
Incoming request to htm-network.dyndns.org:445 failed: ChannelException('Connect failed',)
Kann mir da noch mal jemand helfen?
Antworten