在以 SSH 作为传输介质编写的命令或 RPC 协议中,是否有 SSH 服务器用来解析命令的标准分隔符?
例如,如果我们在客户端和服务器之间定义了一个简单的协议,客户端将打开到服务器的 SSH 连接,然后开始发送字节:
DO COMMAND <something> DO C0MMAND2
有标准吗<something>
?或者 SSH 上的每个协议都“做自己的事情”。
作为标准示例,“空终止字符串是一种 C 构造,用于确定要用作字符串的字符序列的结尾。”:https://stackoverflow.com/questions/34621006/how-can-a-file-contain-null-bytes
如果没有标准,是否需要根据“消息格式”为 SSH 服务器编写自定义解析器?
我的高级问题是 SSH 框架是否知道如何根据某些标准“拆分消息”,或者协议的每个 SSH 服务器是否都是用自定义侦听器编写的,并且必须知道何时收到“完整”消息,等待下一个分隔符等
答案1
安全 shell 就是一种使用方法:壳。因此,通过 SSH 进行命令分隔的语法与本地命令分隔相同:
me@localworkstation:~
$ echo foo; whoami; hostname
foo
me
localworkstation
me@localworkstation:~
$ ssh myself@remote "echo foo; whoami; hostname"
foo
myself
remote