diff --git a/src/sessionmanagerplugin/session/portsession/basicportforwarding.go b/src/sessionmanagerplugin/session/portsession/basicportforwarding.go index 65f1057c8..58d16f0ee 100644 --- a/src/sessionmanagerplugin/session/portsession/basicportforwarding.go +++ b/src/sessionmanagerplugin/session/portsession/basicportforwarding.go @@ -142,6 +142,7 @@ func (p *BasicPortForwarding) startLocalConn(log log.T) (err error) { // startLocalListener starts a local listener to given address func (p *BasicPortForwarding) startLocalListener(log log.T, portNumber string) (listener net.Listener, err error) { + var displayMessage string switch p.portParameters.LocalConnectionType { case "unix": @@ -150,7 +151,13 @@ func (p *BasicPortForwarding) startLocalListener(log log.T, portNumber string) ( } displayMessage = fmt.Sprintf("Unix socket %s opened for sessionId %s.", p.portParameters.LocalUnixSocket, p.sessionId) default: - if listener, err = getNewListener("tcp", "localhost:"+portNumber); err != nil { + listenerHost := os.Getenv("SSM_PLUGIN_LOCAL_HOST") + if listenerHost == "" { + listenerHost = "localhost" + } + listenerAddress := net.JoinHostPort(listenerHost, portNumber) + + if listener, err = getNewListener("tcp", listenerAddress); err != nil { return } // get port number the TCP listener opened diff --git a/src/sessionmanagerplugin/session/portsession/muxportforwarding.go b/src/sessionmanagerplugin/session/portsession/muxportforwarding.go index 45801ce1e..62db3dc32 100644 --- a/src/sessionmanagerplugin/session/portsession/muxportforwarding.go +++ b/src/sessionmanagerplugin/session/portsession/muxportforwarding.go @@ -242,7 +242,14 @@ func (p *MuxPortForwarding) handleClientConnections(log log.T, ctx context.Conte if p.portParameters.LocalPortNumber == "" { localPortNumber = "0" } - if listener, err = net.Listen("tcp", "localhost:"+localPortNumber); err != nil { + + listenerHost := os.Getenv("SSM_PLUGIN_LOCAL_HOST") + if listenerHost == "" { + listenerHost = "localhost" + } + listenerAddress := net.JoinHostPort(listenerHost, localPortNumber) + + if listener, err = net.Listen("tcp", listenerAddress); err != nil { return err } p.portParameters.LocalPortNumber = strconv.Itoa(listener.Addr().(*net.TCPAddr).Port)