# SSH Message Types
## Session Establishment
1. s -> c kexinit
2. c -> s kexinit
3. c -> s kex_ecdh_init
4. s -> c kex_ecdh_reply
5. s -> c newkeys
6. c -> s newkeys
## Extension Negotiation
Optional, especially for client
1. s -> c ext_info
2. c -> s ext_info
## Authentication
TODO: May be other required message types in this flow
1. c -> s service_request (ssh-userauth)
2. s -> c service_accept
3. c -> s userauth_request (publickey probe, no signature) [n times until ok]
4. s -> c userauth_pk_ok
5. c -> s userauth_request (publickey with signature)
6. s -> c userauth_success
## Channel Setup
1. c -> s channel_open (session)
2. s -> c channel_open_confirmation
## Command Execution
1. c -> s channel_request (exec)
2. s -> c channel_success
3. s -> c channel_data (stdout)
4. s -> c channel_extended_data (stderr)
5. s -> c channel_request (exit-status)
6. s -> c channel_eof
7. s -> c channel_close
8. c -> s channel_close
## Disconnect
1. c -> s disconnect