forked from x/ContextOS
add ssh.md
This commit is contained in:
parent
8e1b86d554
commit
1295c8dd93
@ -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"))
|
||||
|
@ -372,14 +372,78 @@ chat模块提供了信息管理。
|
||||
#### 执行命令
|
||||
### 通信框架
|
||||
#### 节点路由
|
||||
每个节点在启动时,自动向上级注册,生成一个动态域名,作为本节点的地址。
|
||||
如com.mac.led,led的上级节点是mac,mac的上级节点是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
|
||||
```
|
||||
|
||||
#### 节点服务
|
||||
### 存储引擎
|
||||
#### 配置
|
||||
#### 缓存
|
||||
|
Loading…
x
Reference in New Issue
Block a user