From cb7459d281a49a8c109997137c7b251464e9caae Mon Sep 17 00:00:00 2001 From: fxiang21 Date: Fri, 2 Feb 2024 14:09:28 +0800 Subject: [PATCH] doc: change readme --- README.md | 13 +++++++++---- README_cn.md | 22 ++++++++++++---------- img.png => docs/images/img.png | Bin img_1.png => docs/images/img_1.png | Bin docs/images/img_2.png | Bin 0 -> 9096 bytes docs/images/img_3.png | Bin 0 -> 9096 bytes {backend/docs => docs}/images/wechat.jpg | Bin 7 files changed, 21 insertions(+), 14 deletions(-) rename img.png => docs/images/img.png (100%) rename img_1.png => docs/images/img_1.png (100%) create mode 100644 docs/images/img_2.png create mode 100644 docs/images/img_3.png rename {backend/docs => docs}/images/wechat.jpg (100%) diff --git a/README.md b/README.md index 656e313..0e662c4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,12 @@ go>=1.18 UI

-oneterm Provide secure access and control over all infrastructure + +**`OneTerm`** Bastion Host, based on the 4A concept, i.e., Authentication, Authorization, Account, and Audit, is designed and developed. + +`Main use`: It is mainly used for products that enhance IT internal control and compliance security by implementing control and audit of IT personnel's operating behaviors in enterprises. + +`Main functions`: role management, authorization approval, resource access control, session audit, etc. --- @@ -15,7 +20,7 @@ oneterm Provide secure access and control over all infrastructure ```bash git clone https://github.com/veops/oneterm.git cd oneterm -docker compose up -d +docker-compose up -d ``` ## ✅ Validation @@ -40,10 +45,10 @@ ssh-keygen -t ed25519 # Generate the key following the prompts cat /root/.ssh/id_ed25519.pub # Copy the public key. The public key address is obtained from the generation process as shown in the previous step ifconfig | grep -B1 "xxx.xxx.xxx.xxx" | awk '/ether/{print $2}' # Get the MAC address, replace xxx.xxx.xxx.xxx with your local IP ``` -![img.png](img.png) +![img.png](docs/images/img.png) 2. Place the public key and MAC on the platform - ![img_1.png](img_1.png) + ![img_1.png](docs/images/img_1.png) ### More Streamlined Login Method ```shell diff --git a/README_cn.md b/README_cn.md index e55c47e..7816434 100644 --- a/README_cn.md +++ b/README_cn.md @@ -4,7 +4,12 @@ go>=1.18 UI

-oneterm 简单、轻量、安全的跳板机服务 + +**`OneTerm`** 堡垒机,基于4A理念,即认证(Authen)、授权(Authorize)、账号(Account)、审计(Audit)设计开发。 + +`主要用途`:主要用于企业通过实现对IT人员操作行为的控制和审计来提升IT内部控制、合规安全性的产品。 + +`主要功能`:角色管理、授权审批、资源访问控制、会话审计等。 --- @@ -15,7 +20,7 @@ oneterm 简单、轻量、安全的跳板机服务 ```bash git clone https://github.com/veops/oneterm.git cd oneterm -docker compose up -d +docker-compose up -d ``` ## ✅验证 @@ -38,10 +43,11 @@ ssh-keygen -t ed25519 # 根据提示生成key cat /root/.ssh/id_ed25519.pub # 拷贝公钥, 公钥地址从上一步生成的过程中获取,如下图所示 ifconfig | grep -B1 "xxx.xxx.xxx.xxx" | awk '/ether/{print $2}' # 获取mac地址, 其中xxx.xxx.xxx.xxx换成您本机的IP ``` -![img.png](img.png) + +![img.png](docs/images/img.png) 2. 将公钥和mac放在平台上 -![img_1.png](img_1.png) +![img_1.png](docs/images/img_1.png) ### 更精简的的登录方式 ```shell @@ -60,10 +66,6 @@ Host oneterm User admin # 此处替换为您oneterm上的平台用户 ``` - - - - ## 📚产品文档 文档地址:https://veops.cn/docs/docs/oneterm/onterm_design @@ -75,10 +77,10 @@ Host oneterm ## 🔗相关项目 -[go-ansiterm](https://github.com/veops/go-ansiterm):linux终端仿真器 +[go-ansiterm](https://github.com/veops/go-ansiterm):linux终端仿真器,主要是根据终端输入和服务器回显解析命令 ## 🤝社区交流 **欢迎关注公众号(维易科技OneOps),关注后可加入微信群,进行产品和技术交流。** -![公众号: 维易科技OneOps](backend/docs/images/wechat.jpg) \ No newline at end of file +![公众号: 维易科技OneOps](docs/images/wechat.jpg) \ No newline at end of file diff --git a/img.png b/docs/images/img.png similarity index 100% rename from img.png rename to docs/images/img.png diff --git a/img_1.png b/docs/images/img_1.png similarity index 100% rename from img_1.png rename to docs/images/img_1.png diff --git a/docs/images/img_2.png b/docs/images/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..675ab3a378e4b7c1dd898d924254f7557a120370 GIT binary patch literal 9096 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