mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-26 09:14:06 +08:00
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{
|
Configs: map[string]*ctx.Config{
|
||||||
"node": &ctx.Config{Name: "node", Value: map[string]interface{}{}, Help: "节点信息"},
|
"node": &ctx.Config{Name: "node", Value: map[string]interface{}{}, Help: "节点信息"},
|
||||||
"cert": &ctx.Config{Name: "cert", 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: "断线重连"},
|
"timer": &ctx.Config{Name: "timer", Value: map[string]interface{}{"interval": "10s", "timer": ""}, Help: "断线重连"},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ctx.Command{
|
Commands: map[string]*ctx.Command{
|
||||||
@ -292,6 +292,7 @@ var Index = &ctx.Context{Name: "ssh", Help: "集群中心",
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
m.Log("warn", "user error of %s", m.Option("user.route"))
|
m.Log("warn", "user error of %s", m.Option("user.route"))
|
||||||
|
m.Echo("user error")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.Log("info", "username: %s", m.Option("username"))
|
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