造了好多轮子,上次发的这篇文章得到了关注我写了个系统,用来一键创建测试环境
陆续更新了一些功能和优化了体验后,用起来也是丝般顺滑了,于是又开始造新轮子了
Django实现WebSSH操作物理机或虚拟机
这个轮子有源码,你可以自己部署使用
千不该万不该在js社区推py
@zengming00 这个是一个技术社区,应该讨论和发布关于 nodejs 的帖,而不是其他技术的就让他出门左转,甚至拉出去枪毙。
这又不是信仰,是大伙恰饭的工具而已
@zengming00 对不住,前端渣渣,之所以在这里发是因为觉得这个社区氛围很好,没啥戾气,不知道有咩有block功能,如果有麻烦你把我block了吧,抱歉
@axetroy 千言万语化成一句感谢!
@ops-coffee 很欢迎的~~~
挺不错的,不过从我个人角度来看,现在的趋势是越来越不给开发者直接上服务器的权限了,尤其是安全容器出来后,ssh 和 sh 指令都没了。
@atian25 正常情况下,开发者是没有生产服务器登陆权限的,不过开发、测试环境还可以给嘛,毕竟要查问题,另外这个webssh下一步会添加录像的功能,也就是所有操作都会录制下来,可以回放,用在生产环境,给运维人员使用也更有保障,录像功能下篇文章介绍
@ops-coffee 我们这边是更倾向于通过日志来排查问题,通过单测来保障质量,通过平台来运维。
@atian25 大佬厉害了,我们也有完善的系统流程保障,不过登陆服务器这种操作,不能完全避免,偶尔还是需要
像现在看到基础措施团队在调研 https://github.com/GoogleContainerTools/distroless 做安全镜像,到时镜像里面,连 vi 和 ssh 都没有了。如果是 Node 的话,就一个 node cli,连 npm 都没。再加上日志无盘化,只读镜像。
@atian25 我们这么干过,,but,,这个需要整个团队都有很高的能力,很好的合作,实验下来效果不好,主要是因为我们太菜了。。。不过这也是未来的方向
我的系统还真的需要你的这个应用 VueOS
@biggerV node.js 也一样可以。
蛮好玩的
@zengming00 拿node写一个,别怂
@i5ting 怂,懒,不写,两三年前写过一个类似的玩意,但是要简单得多,只能执行配置好的命令,有部署在公司服务器上,但从未真正用上
socket.on('message', function (msg: string) { socket.send(`> ${msg}`); kill(); if (!util.isString(msg) || !currentUser) { return; } const msgStr = msg.trim(); if (!msgStr) { return; } let command: string | null = null; // 查找命令 for (const cmd of currentUser.cmds) { if (cmd.name === msgStr) { command = cmd.cmd; break; } } if (!command) { socket.send(`找不到 ${msgStr} 命令`); return; } socket.send(`>> ${command}`); const arr = command.split(/\s+/); cp = child_process.spawn(arr[0], arr.slice(1)); function sendMsg(data: any) { socket.send(data.toString()); } cp.stdout.on('data', sendMsg); cp.stderr.on('data', sendMsg); cp.on('error', sendMsg); cp.on('close', (code) => { socket.send(`\r\nchild process exited with code ${code} \r\n\r\n`); cp = null; }); });
@i5ting 我正在用node写类似的运维系统,其实在想是不是用py写更有优势啊
@dengnan123 大多linux会内置py,除此以外,没看出来
做过一个内部使用的工具集成了这个功能, 就是 node 撸的(electron客户端工具),使用 ws + node-pty + xterm.js 。 单独抽出来的话,加上 express 可以部署成 web terminal。
更新一下,添加了录像功能,可以对所有操作进行录像,并回放
文章地址:https://ops-coffee.cn/s/XBKEfJKaucTFFcj-cS95LQ
没发现源码啊
再更新一下,有添加了实时在线监控和强制踢用户下线功能
https://ops-coffee.cn/s/GXhkc8rBHhjjf_wHxd7j3w
挺有意思的,我找了半天也没找到源码ˇ,OGM
最近在写一套系统,管理服务器的,前端 Nodejs + Nuxt, 后端 Golang
开发/运维人员无需知道服务器的密码/密钥,只需简单的配置,邀请人员加入工作组即可在 web 端操作服务器
后面加上
思路已经有了,也开始做了,稍微晚点,待完善点之后,再开源
@axetroy 非常棒!
翻遍了google都没有找到答案,最后各种源码解读,有添加了新功能lrzsz支持文件上传下载,这功能现在各大云厂商的web终端似乎都还没有支持
https://ops-coffee.cn/s/poC2i859LQwIY1USq2Rfjw
上面这个功能可能让服务器的安全系数降低很多。不是没有大厂支持,而是觉得没有必要。
@lellansin 具体说说怎么降低了,既然提供了ssh功能
@axetroy 给了我一个很好的思路
@ops-coffee 常见的情况是从 CI/CD 过程自动部署 artifacts 到机器上(or 生成 docker 来自动拉起等),禁止开发者通过非正规流程上传代码和 assets,并且所有文件只有 read 权限禁止用户修改线上的任何东西。ssh 仅供 check 状态,不能用来做任何变更。一旦用户通过 ssh 来做变更,那么下一次正规的流程下来这个应用很可能就挂了(特别是开发者人数大于 2 的时候)。
@lellansin 你说的这个仅仅是特定场景,几乎所有正规的公司生产环境服务器都不允许开发登陆
@ops-coffee Emmm, I work for Alibaba. I’m sure I can.
@lellansin 只能说明阿里这块管理也是烂,生产都应该是ops,sre的活,或者如果有devops职位的话
@ops-coffee 生产可能出现的问题很复杂, 比如网络问题,只能跑到机器上去 check 状态。查看 TIME_WAIT、CLOSE_WAIT、IO-Hang 等等状态,很多这种状态的异常通常跟项目的编码和部署没有任何关系,只跟服务器当前的状态有关。
系统一点的话,推荐你看 Brendan Gregg 的《性能之巅》或者他的博客。可以了解一些常见的登录服务器排查问题的方法,比如《性能之巅》里提到的 USE 方法,它包含 30 种衡量和排查服务器问题的维度以及对应的工具方法推荐。
@lellansin 其实我的本职工作是运维,Troubleshooting是运维的基础,写WebSSH纯粹是对开发的喜爱,没有需求也米有KPI,感谢大佬推荐,我好好学习下
前面楼说了要写这么个东西
已经实现了终端回放了
真开源: https://github.com/axetroy/wsm
欢迎一起交流学习
@axetroy 很棒,那个监控怎么玩的
@dengnan123 什么监控?终端的录像吗?
其实就像歌词一样,把终端的流,一帧一帧得记录下来。
做成这样的格式
(2020-01-09 15:14:33.929) ls -lh (2020-01-09 15:14:33.929) vim xxx.md (2020-01-09 15:14:33.929) exit
源码这里
然后返回给前端,解析然后逐条数据进行渲染
@axetroy 👌,懂了
@axetroy 大佬 666,继续做的更好呀
@axetroy 哈哈哈哈
这贴的东西好新奇。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
千不该万不该在js社区推py
@zengming00 这个是一个技术社区,应该讨论和发布关于 nodejs 的帖,而不是其他技术的就让他出门左转,甚至拉出去枪毙。
这又不是信仰,是大伙恰饭的工具而已
@zengming00 对不住,前端渣渣,之所以在这里发是因为觉得这个社区氛围很好,没啥戾气,不知道有咩有block功能,如果有麻烦你把我block了吧,抱歉
@axetroy 千言万语化成一句感谢!
@ops-coffee 很欢迎的~~~
挺不错的,不过从我个人角度来看,现在的趋势是越来越不给开发者直接上服务器的权限了,尤其是安全容器出来后,ssh 和 sh 指令都没了。
@atian25 正常情况下,开发者是没有生产服务器登陆权限的,不过开发、测试环境还可以给嘛,毕竟要查问题,另外这个webssh下一步会添加录像的功能,也就是所有操作都会录制下来,可以回放,用在生产环境,给运维人员使用也更有保障,录像功能下篇文章介绍
@ops-coffee 我们这边是更倾向于通过日志来排查问题,通过单测来保障质量,通过平台来运维。
@atian25 大佬厉害了,我们也有完善的系统流程保障,不过登陆服务器这种操作,不能完全避免,偶尔还是需要
像现在看到基础措施团队在调研 https://github.com/GoogleContainerTools/distroless 做安全镜像,到时镜像里面,连 vi 和 ssh 都没有了。如果是 Node 的话,就一个 node cli,连 npm 都没。再加上日志无盘化,只读镜像。
@atian25 我们这么干过,,but,,这个需要整个团队都有很高的能力,很好的合作,实验下来效果不好,主要是因为我们太菜了。。。不过这也是未来的方向
我的系统还真的需要你的这个应用 VueOS
@biggerV node.js 也一样可以。
蛮好玩的
@zengming00 拿node写一个,别怂
@i5ting 怂,懒,不写,两三年前写过一个类似的玩意,但是要简单得多,只能执行配置好的命令,有部署在公司服务器上,但从未真正用上
@i5ting 我正在用node写类似的运维系统,其实在想是不是用py写更有优势啊
@dengnan123 大多linux会内置py,除此以外,没看出来
做过一个内部使用的工具集成了这个功能, 就是 node 撸的(electron客户端工具),使用 ws + node-pty + xterm.js 。 单独抽出来的话,加上 express 可以部署成 web terminal。
更新一下,添加了录像功能,可以对所有操作进行录像,并回放
文章地址:https://ops-coffee.cn/s/XBKEfJKaucTFFcj-cS95LQ
没发现源码啊
再更新一下,有添加了实时在线监控和强制踢用户下线功能
https://ops-coffee.cn/s/GXhkc8rBHhjjf_wHxd7j3w
挺有意思的,我找了半天也没找到源码ˇ,OGM
最近在写一套系统,管理服务器的,前端 Nodejs + Nuxt, 后端 Golang
开发/运维人员无需知道服务器的密码/密钥,只需简单的配置,邀请人员加入工作组即可在 web 端操作服务器
后面加上
思路已经有了,也开始做了,稍微晚点,待完善点之后,再开源
@axetroy 非常棒!
翻遍了google都没有找到答案,最后各种源码解读,有添加了新功能lrzsz支持文件上传下载,这功能现在各大云厂商的web终端似乎都还没有支持
https://ops-coffee.cn/s/poC2i859LQwIY1USq2Rfjw
上面这个功能可能让服务器的安全系数降低很多。不是没有大厂支持,而是觉得没有必要。
@lellansin 具体说说怎么降低了,既然提供了ssh功能
@axetroy 给了我一个很好的思路
@ops-coffee 常见的情况是从 CI/CD 过程自动部署 artifacts 到机器上(or 生成 docker 来自动拉起等),禁止开发者通过非正规流程上传代码和 assets,并且所有文件只有 read 权限禁止用户修改线上的任何东西。ssh 仅供 check 状态,不能用来做任何变更。一旦用户通过 ssh 来做变更,那么下一次正规的流程下来这个应用很可能就挂了(特别是开发者人数大于 2 的时候)。
@lellansin 你说的这个仅仅是特定场景,几乎所有正规的公司生产环境服务器都不允许开发登陆
@ops-coffee Emmm, I work for Alibaba. I’m sure I can.
@lellansin 只能说明阿里这块管理也是烂,生产都应该是ops,sre的活,或者如果有devops职位的话
@ops-coffee 生产可能出现的问题很复杂, 比如网络问题,只能跑到机器上去 check 状态。查看 TIME_WAIT、CLOSE_WAIT、IO-Hang 等等状态,很多这种状态的异常通常跟项目的编码和部署没有任何关系,只跟服务器当前的状态有关。
系统一点的话,推荐你看 Brendan Gregg 的《性能之巅》或者他的博客。可以了解一些常见的登录服务器排查问题的方法,比如《性能之巅》里提到的 USE 方法,它包含 30 种衡量和排查服务器问题的维度以及对应的工具方法推荐。
@lellansin 其实我的本职工作是运维,Troubleshooting是运维的基础,写WebSSH纯粹是对开发的喜爱,没有需求也米有KPI,感谢大佬推荐,我好好学习下
前面楼说了要写这么个东西
已经实现了终端回放了
真开源: https://github.com/axetroy/wsm
欢迎一起交流学习
@axetroy 很棒,那个监控怎么玩的
@dengnan123 什么监控?终端的录像吗?
其实就像歌词一样,把终端的流,一帧一帧得记录下来。
做成这样的格式
源码这里
然后返回给前端,解析然后逐条数据进行渲染
@axetroy 👌,懂了
@axetroy 大佬 666,继续做的更好呀
@axetroy 哈哈哈哈
这贴的东西好新奇。