11. 其他消息
11. 其他消息 (Additional Messages)
任一方可以在任何时候发送以下任一消息.
11.1. 断开连接消息 (Disconnection Message)
byte SSH_MSG_DISCONNECT
uint32 reason code
string description in ISO-10646 UTF-8 encoding [RFC3629]
string language tag [RFC3066]
此消息会导致连接立即终止. 所有实现都必须 (MUST) 能够处理此消息; 它们应该 (SHOULD) 能够发送此消息.
发送方在此消息之后不得 (MUST NOT) 发送或接收任何数据, 接收方在收到此消息之后也不得 (MUST NOT) 接受任何数据. Disconnection Message 的 description 字符串以人类可读形式给出更具体的说明. Disconnection Message 的 reason code 以更适合机器处理的格式给出原因 (适合本地化), 可取下表所示的值. 注意, 表中为了可读性显示十进制表示, 但这些值实际是 uint32 值.
Symbolic name reason code
------------- -----------
SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT 1
SSH_DISCONNECT_PROTOCOL_ERROR 2
SSH_DISCONNECT_KEY_EXCHANGE_FAILED 3
SSH_DISCONNECT_RESERVED 4
SSH_DISCONNECT_MAC_ERROR 5
SSH_DISCONNECT_COMPRESSION_ERROR 6
SSH_DISCONNECT_SERVICE_NOT_AVAILABLE 7
SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED 8
SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE 9
SSH_DISCONNECT_CONNECTION_LOST 10
SSH_DISCONNECT_BY_APPLICATION 11
SSH_DISCONNECT_TOO_MANY_CONNECTIONS 12
SSH_DISCONNECT_AUTH_CANCELLED_BY_USER 13
SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE 14
SSH_DISCONNECT_ILLEGAL_USER_NAME 15
如果显示 description 字符串, 则应该使用 [SSH-ARCH] 中讨论的控制字符过滤, 以避免通过发送终端控制字符实施攻击.
为 0x00000010 到 0xFDFFFFFF 范围内的新 Disconnection Message reason code 值 (以及关联的 description 文本) 请求分配时, 必须 (MUST) 按 [RFC2434] 所述通过 IETF CONSENSUS 方法完成. 0xFE000000 到 0xFFFFFFFF 范围内的 Disconnection Message reason code 值保留为 PRIVATE USE. 如前所述, 给 IANA 的实际指令位于 [SSH-NUMBERS].
11.2. 忽略数据消息 (Ignored Data Message)
byte SSH_MSG_IGNORE
string data
所有实现都必须 (MUST) 在任何时候 (收到标识字符串之后) 理解并忽略此消息. 没有实现被要求发送此消息. 此消息可以作为抵御高级流量分析技术的附加保护措施.
11.3. 调试消息 (Debug Message)
byte SSH_MSG_DEBUG
boolean always_display
string message in ISO-10646 UTF-8 encoding [RFC3629]
string language tag [RFC3066]
所有实现都必须 (MUST) 理解此消息, 但允许忽略它. 此消息用于传递可能有助于调试的信息. 如果 always_display 为 TRUE, 则应该 (SHOULD) 显示该消息. 否则, 除非用户明确请求调试信息, 否则不应该 (SHOULD NOT) 显示该消息.
message 不需要包含换行符. 但它允许由多行组成, 各行之间用 CRLF (Carriage Return - Line Feed) 对分隔.
如果显示 message 字符串, 则应该使用 [SSH-ARCH] 中讨论的终端控制字符过滤, 以避免通过发送终端控制字符实施攻击.
11.4. 保留消息 (Reserved Messages)
实现必须 (MUST) 按收到消息的顺序, 使用 SSH_MSG_UNIMPLEMENTED 消息响应所有无法识别的消息. 除此之外, 此类消息必须 (MUST) 被忽略. 后续协议版本可以为这些消息类型定义其他含义.
byte SSH_MSG_UNIMPLEMENTED
uint32 packet sequence number of rejected message