Skip to content

Implement ping@openssh.com extension #563

@gnodet

Description

@gnodet

Description

See https://github.com/openssh/openssh-portable/blob/V_9_8/PROTOCOL#L107-L138

1.9 transport: ping facility

OpenSSH implements a transport level ping message SSH2_MSG_PING
and a corresponding SSH2_MSG_PONG reply.

#define SSH2_MSG_PING 192
#define SSH2_MSG_PONG 193

The ping message is simply:

byte SSH_MSG_PING
string data

The reply copies the data (which may be the empty string) from the
ping:

byte SSH_MSG_PONG
string data

Replies are sent in order. They are sent immediately except when rekeying
is in progress, in which case they are queued until rekeying completes.

The server advertises support for these messages using the
SSH2_MSG_EXT_INFO mechanism (RFC8308), with the following message:

string "ping@openssh.com"
string "0" (version)

The ping/reply message is implemented at the transport layer rather
than as a named global or channel request to allow pings with very
short packet lengths, which would not be possible with other
approaches.

Motivation

When this extension is supported by the server, ping messages are sent by the OpenSSH client to perform keystroke timing obfuscation.

Alternatives considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions