apache / apache/mina-sshd

Implement ping@openssh.com extension

Open
#563 0 comments 1 reaction 0 assignees View on GitHub
feature request
Dominant language
Java
Stars
1.1k
Forks
400
Avg merge
5d 1h
Merged PRs (30d)
1

Description

### 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_

Contributor guide

No contributing guide indexed for this repository

Research direction

Read the referenced OpenSSH PROTOCOL section first, then locate the SSH transport-layer message handling and SSH2_MSG_EXT_INFO support in mina-sshd. Implement the ping and pong message formats, advertise version 0, preserve payload data and reply ordering, and account for rekeying; done means the extension interoperates with the described OpenSSH behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.