Implement ping@openssh.com extension
- 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