def _do_localForwards(self, localForwards): for localPort, hostport in options.localForwards: s = reactor.listenTCP( localPort, forwarding.SSHListenForwardingFactory( conn, hostport, SSHListenClientForwardingChannel)) self.localForwards.append(s)
def onConnect(): # if keyAgent and options['agent']: # cc = protocol.ClientCreator(reactor, SSHAgentForwardingLocal, conn) # cc.connectUNIX(os.environ['SSH_AUTH_SOCK']) if hasattr(conn.transport, "sendIgnore"): _KeepAlive(conn) if options.localForwards: for localPort, hostport in options.localForwards: s = reactor.listenTCP( localPort, forwarding.SSHListenForwardingFactory( conn, hostport, SSHListenClientForwardingChannel), ) conn.localForwards.append(s) if options.remoteForwards: for remotePort, hostport in options.remoteForwards: log.msg( f"asking for remote forwarding for {remotePort}:{hostport}") conn.requestRemoteForwarding(remotePort, hostport) reactor.addSystemEventTrigger("before", "shutdown", beforeShutdown) if not options["noshell"] or options["agent"]: conn.openChannel(SSHSession()) if options["fork"]: if os.fork(): os._exit(0) os.setsid() for i in range(3): try: os.close(i) except OSError as e: import errno if e.errno != errno.EBADF: raise
def global_tcpip_forward(self, data): local, remote = forwarding.unpackOpen_direct_tcpip(data) hostToBind, portToBind = local log.msg("forward requested %s:%s" % (hostToBind, portToBind)) log.msg(remote) try: listener = reactor.listenTCP( portToBind, forwarding.SSHListenForwardingFactory( self.conn, (hostToBind, portToBind), forwarding.SSHListenServerForwardingChannel), interface=hostToBind) listener.remote_host = remote[0] listener.remote_port = remote[1] except: return 0 else: generated = False if portToBind == 0: portToBind = listener.getHost()[2] # the port print "generating port number", portToBind generated = True self.listeners[(hostToBind, portToBind)] = listener if generated: return 1, struct.pack('>L', portToBind) else: return 1
def global_tcpip_forward(self, data): host, port = forwarding.unpackGlobal_tcpip_forward(data) try: listener = reactor.listenTCP( port, forwarding.SSHListenForwardingFactory( self.conn, (host, port), forwarding.SSHListenServerForwardingChannel), interface=host) except: log.err(None, "something went wrong with remote->local forwarding") return 0 else: self.listeners[(host, port)] = listener return 1
def serviceStarted(self): if not options['noshell']: self.openChannel(SSHSession()) if options.localForwards: for localPort, hostport in options.localForwards: reactor.listenTCP(localPort, forwarding.SSHListenForwardingFactory(self, hostport, forwarding.SSHListenClientForwardingChannel)) if options.remoteForwards: for remotePort, hostport in options.remoteForwards: log.msg('asking for remote forwarding for %s:%s' % (remotePort, hostport)) data = forwarding.packGlobal_tcpip_forward( ('0.0.0.0', remotePort)) self.sendGlobalRequest('tcpip-forward', data) self.remoteForwards[remotePort] = hostport
def serviceStarted(self): if not options["noshell"]: self.openChannel(SSHSession()) if options.localForwards: for localPort, hostport in options.localForwards: reactor.listenTCP( localPort, forwarding.SSHListenForwardingFactory( self, hostport, forwarding.SSHListenClientForwardingChannel), ) if options.remoteForwards: for remotePort, hostport in options.remoteForwards: log.msg("asking for remote forwarding for {}:{}".format( remotePort, hostport)) data = forwarding.packGlobal_tcpip_forward( ("0.0.0.0", remotePort)) self.sendGlobalRequest("tcpip-forward", data) self.remoteForwards[remotePort] = hostport
def global_tcpip_forward(self, data): hostToBind, portToBind = forwarding.unpackGlobal_tcpip_forward(data) from twisted.internet import reactor try: listener = self._runAsUser( reactor.listenTCP, portToBind, forwarding.SSHListenForwardingFactory( self.conn, (hostToBind, portToBind), forwarding.SSHListenServerForwardingChannel), interface=hostToBind) except: return 0 else: self.listeners[(hostToBind, portToBind)] = listener if portToBind == 0: portToBind = listener.getHost()[2] # The port return 1, struct.pack('>L', portToBind) else: return 1