1
0
forked from x/ContextOS

add ssh.md

This commit is contained in:
shaoying 2019-05-11 19:21:42 +08:00
parent 8e1b86d554
commit 1295c8dd93
2 changed files with 71 additions and 6 deletions

View File

@ -35,7 +35,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
Configs: map[string]*ctx.Config{
"node": &ctx.Config{Name: "node", Value: map[string]interface{}{}, Help: "节点信息"},
"cert": &ctx.Config{Name: "cert", Value: map[string]interface{}{}, Help: "用户信息"},
"trust": &ctx.Config{Name: "trust", Value: map[string]interface{}{"fresh": true, "user": true, "up": true}, Help: "可信节点"},
"trust": &ctx.Config{Name: "trust", Value: map[string]interface{}{"fresh": false, "user": true, "up": true}, Help: "可信节点"},
"timer": &ctx.Config{Name: "timer", Value: map[string]interface{}{"interval": "10s", "timer": ""}, Help: "断线重连"},
},
Commands: map[string]*ctx.Command{
@ -292,6 +292,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
} else {
m.Log("warn", "user error of %s", m.Option("user.route"))
m.Echo("user error")
return
}
m.Log("info", "username: %s", m.Option("username"))

View File

@ -372,14 +372,78 @@ chat模块提供了信息管理。
#### 执行命令
### 通信框架
#### 节点路由
每个节点在启动时,自动向上级注册,生成一个动态域名,作为本节点的地址。
如com.mac.ledled的上级节点是macmac的上级节点是com。
其它节点,就可以通过个这个地址查找到此节点。
在调用远程命令时,通信模块根据远程地址的第一个字段,查找子节点,查取成功后,会将剩余的地址与命令发送给查到的子节点。
子节点收到地址与命令后,继续查找子节点,直到目标节点收到命令,然后将执行结果原路返回。
在查找的过程中,如果没有查找到子节点,则会传给上级节点重新处理。
#### 节点认证
- text.hash
- node.sign
- user.sign
- work.name
**节点加密**
每个节点都有证书与密钥。每个节点在发送命令时,都会用自己的密钥签名,目标节点都会用它的证书验签。以此保证命令来源的可靠性。
**节点类型**
- 初始节点,没有归属的节点
- 主控节点,有用户证书与密钥的节点
- 从属节点,有用户证书的节点
- 代理节点,主控节点指定的代理节点
- 共享节点,允许多个用户控制的节点
- 认证节点,专门用来存放与查询用户证书的节点
用户在某一设备上添加自己的证书与密钥,此节点即为主控节点。 在其它节点上绑定自己的证书,此即为从属节点。
主控节点就可任意控制从属节点,从属节点不能控制主控节点,从属节点之间也不能相互控制。
主控节点可以指定代理节点,代理节点可以代替主控节点控制从属节点。
共享节点,会有多个用户,可能产生冲突,所以需要认证节点协调。
访问共享节点前,需要向认证节点注册,共享节点会从认证节点取出访问用户的信息。
#### 节点权限
***角色***
每个访问用户,都会指定一个角色。
主控节点的用户默认有root权限。即拥有设备的所有控制权限。
认证节点的用户默认有tech权限。一般是部分功能。
其它节点的用户默认有void权限。即拥有最小集合的权限一般是只读的命令。
***组件***
组件是功能的集合远程访问至少要有remote与source组件的权限才可以执行命令。
每个角色下都会有多个组件的权限。
***命令***
命令就节点向外提供功能的最小单元。
每个组件下都会有多条命令。
***规则***
每条命令内部可以用组件与命令的权限机制自定义权限检查。
权限的分配完全由主控节点与从属节点自己配置,其它节点不许配置。
***示例***
如下配置用户shy的角色是tech角色tech下有两个组件remote与source每个组件下都有命令pwd与dir所以用户shy就可以远程调用命令dir与pwd
```
role tech user shy
role tech componet remote command pwd dir
role tech componet source command pwd dir
```
#### 节点服务
### 存储引擎
#### 配置
#### 缓存