Ssh - Channel =

Table of Contents


Ssh provides the following channel (communication protocols):

  • interactive login sessions,
  • remote execution of commands,
  • forwarded (“tunneling”) TCP/IP connection. ie The SSH connection protocol allows for proxy forwarding of other protocols such as SMTP, POP3, and HTTP.
  • and forwarded (“tunneling”) X11 connections.

All of these channels are multiplexed into a single encrypted tunnel.

All terminal sessions, forwarded connections, etc., are channels. Either side may open a channel. Multiple channels are multiplexed into a single connection. Channels are identified by numbers at each end. The number referring to a channel may be different on each side. Requests to open a channel contain the sender's channel number.

  • Open

When either side wishes to open a new channel, it allocates a local number for the channel. It then sends the following message to the other side, and includes the local channel number and initial window size in the message.

The 'channel type' is a name, as described in [SSH-ARCH] and [SSH-NUMBERS], with similar extension mechanisms.

Channel type                  Reference
------------                  ---------
session                       [SSH-CONNECT, Section 6.1]
x11                           [SSH-CONNECT, Section 6.3.2]
forwarded-tcpip               [SSH-CONNECT, Section 7.2]
direct-tcpip                  [SSH-CONNECT, Section 7.2]

The remote side then decides whether it can open the channel, and responds with either SSH_MSG_CHANNEL_OPEN_CONFIRMATION or SSH_MSG_CHANNEL_OPEN_FAILURE.

  • Closing a Channel

When a party will no longer send more data to a channel, it SHOULD send SSH_MSG_CHANNEL_EOF. Note that the channel remains open after this message, and more data may still be sent in the other direction. The channel is considered closed for a party when it has both sent and received SSH_MSG_CHANNEL_CLOSE, and the party may then reuse the channel number.

Powered by ComboStrap