---
name: "libssh2_channel_direct_tcpip_ex"
section: "3"
platform: "linux"
package: "libssh2"
version: "1.11.1-7"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libssh2_channel_direct_tcpip_ex"
---

# libssh2\_channel\_direct\_tcpip\_ex(3)

Tunnel a TCP connection through an SSH session

## NAME

libssh2\_channel\_direct\_tcpip\_ex - Tunnel a TCP connection through an SSH session

## SYNOPSIS

```
#include <libssh2.h>
LIBSSH2_CHANNEL *
libssh2_channel_direct_tcpip_ex(LIBSSH2_SESSION *session,
                                const char *host, int port,
                                const char *shost, int sport);
LIBSSH2_CHANNEL *
libssh2_channel_direct_tcpip(LIBSSH2_SESSION *session,
                             const char *host, int port);
```

## DESCRIPTION

*session* - Session instance as returned by **[libssh2\_session\_init\_ex(3)](/libssh2_session_init_ex/3.md)**

*host* - Third party host to connect to using the SSH host as a proxy.

*port* - Port on third party host to connect to.

*shost* - Host to tell the SSH server the connection originated on.

*sport* - Port to tell the SSH server the connection originated from.

Tunnel a TCP/IP connection through the SSH transport via the remote host to a third party. Communication from the client to the SSH server remains encrypted, communication from the server to the 3rd party host travels in cleartext.

## RETURN VALUE

Pointer to a newly allocated LIBSSH2\_CHANNEL instance, or NULL on errors.

## ERRORS

*LIBSSH2\_ERROR\_ALLOC* - An internal memory allocation call failed.

## SEE ALSO

**[libssh2\_session\_init\_ex(3)](/libssh2_session_init_ex/3.md)**
