【CSDN开源夏令营】 基于Web的SSH客户端,实现跨平台的云服务管理(一)前言

【CSDN开源夏令营】 基于Web的SSH客户端,实现跨平台的云服务管理(一)前言


首先非常感谢CSDN能举办这种公益的开源夏令营活动,同时特别感谢腾讯开源的陈子舜老师给我机会参与“基于Web的SSH客户端,实现跨平台的云服务管理”项目的开发,这个活动不仅使我这个暑期可以学到新的专业知识,同时也能为开源与公益做出自己的一点点贡献~!微笑

  • 介绍

我们现在大多数的ssh客户端其实都是基于不同的操作系统设计的,例如windows的putty,还有mac的iTerm。现在基于iaas的云服务在行业中广泛地使用,从安全角度,以及使用的方便性上,我们希望给云服务提供一整套的解决方案。其中在线的ssh客户端其实就是为了提升云服务器使用的一种体验更好的手段。在线的ssh客户端可以免去用户操作服务器需要安装客户端的需求(如果电脑不在身边,需要快速处理就是很好的场景)。同时作为底层服务,还可以对服务器登陆的鉴权和服务器的账号打通。减少服务器root密码被盗用的可能。web base ssh client,在很早之前,已经有不少开源项目,但是因为web技术的落后,所以体验上还是比不上客户端体验。但是随着web技术的发展,例如html5和更加高级的浏览器技术,实现一个在线的ssh客户端已经成为现实。例如http://koding.com。


  • 优点

基于网络的一个主要优点SSH可以概括如下:

  • 辅助功能:如本文中所描述的基于Web的SSH需要客户端软件没有本地安装。因此,可以通过从任何地方的Web浏览器来访问的SSH服务器。由于通信是基于HTTPHTTPS的,也可以从后面访问的SSH服务器的防火墙代理服务器,限制上网仅80端口(HTTP)或443(HTTPS)。
  • 匿名访问:由于SSH访问是通过一个中介隧道Web应用程序服务器是该服务器实际上与SSH服务器进行通信。这意味着,SSH服务器将仅知道的IP地址的的Web应用程序服务器,保持实际的客户端的IP地址隐藏起来。
  • 可审计性:由于客户端和SSH服务器之间的所有通信都必须通过Web应用程序服务器这种通信可以被记录。这样可以防止恶意用户通过删除其活动日志。这种情况是完全一样的,与传统的SSH服务器。
  • 恢复会话:一些基于Web的SSH实现允许用户在断开连接后恢复其SSH会话。这是不可能用传统的SSH客户端。
  • 嵌入式:基于Web的版本的SSH可以嵌入到任何网页允许它们被集成到其他基于Web的应用程序。
  • 独特的特点:许多基于Web的SSH工具有独特的功能,例如与其他用户共享终端,可以显示码头内的图像,以及其他有用的功能的能力。

  • 完成标准
实现在线的SSH客户端,并且支持跨平台和跨浏览器,并且支持常见linux命令功能,例如vi, top 等。
  • 开发要求
精通 linux,了解ssh客户端的功能。 熟悉 php/node.js 等后台的技术 熟练使用Javascrīpt、Ajax以及CSS编写。 熟悉常见的网络协议,以及熟悉h5 的 Websocket 。
  • 解决方案
ssh server --(ssh Protocol)--> web server(ssh client) --(web socket)---> web browser
整个项目有三部分环节, web server 充当了一个跑在本地服务器端的ssh 客户端
web browser:通常的JavaScript和动态HTML页用于记录按键,从服务器传输消息到/和在用户的显示结果的Web浏览器
web server用于处理传入请求的Web服务器。键盘事件被转发到一个ssh客户端所连接的通信的SSH服务器。终端输出要么是传递到它是通过转换成HTML客户端的JavaScript要么是它被翻译成HTML服务器之前将其传送给客户端。
ssh server:安装在要连接电脑上的ssh server。

这就涉及了下面的两种终端模拟解决方案:

客户端的终端模拟

基于web的SSH服务器通常使用ssh终端的web模拟器传输来自SSH server的原始输出给客户。这种方法具有不需要安装ssh客户端的优点。这种方法的缺点是,它是由JavaScript的能力去限制它会占用客户电脑比较多的CPU和内存的来处理传入的字符流。它也依赖于客户保持终端状态的跟踪和应对转义序列

服务器端的终端模拟

基于Web的SSH服务器通常利用服务器端的终端仿真跟踪终端屏幕和状态在内存中,并当屏幕更新时或当客户明确要求要更新时将其转换为HTML。这种方法的优点是,即使用户从不同的Web浏览器连接到其现有会话,终端的状态能保持一致。它也使服务器能够作用在终端输出,即使用户被断开。此方法的缺点是,它使用在服务器上的CPU和存储器。
  • 主要研究内容

下面的问题必须考虑,重要的是使用基于Web的SSH客户端时:

  • 安全性:确保重要的是HTTPS的通讯时使用的Web应用服务器。否则,被发送的所有数据将是可读通过使用简单的数据包嗅探器可能泄露敏感信息。
  • 信任:被发送到Web应用程序服务器中的数据进行解密在那里。这是必要的,以该发出的命令转发到实际的SSH服务器。尽管基于Web的SSH解决方案的运营商通常不记录敏感数据的数据在理论上是提供给他们以纯的形式。这是不可能的,这将导致安全问题时,Web应用程序服务器和SSH服务器都运行在同一台服务器上或者由同一机构控制。
  • 隧道技术:不同于传统的基于应用程序的SSH客户端,基于网络的SSH客户端将无法使用(“foward”)的TCP通道。例如,在一个基于Web的SSH会话运行X Window会话是不可能的。


  • 目前正在研究内容
ssh server的协议如何通过web server传递给前端
前端如何通过websocket与web server进行数据通讯
如何把ssh server的信息展示给用户。
前端客户端的功能,例如输入,键盘操作和鼠标操作如何进行支持。
考虑在可参考的已有的开源代码上面关于安全和易用两方面做一些优化和特性迭代。

  • 参考资料

https://github.com/chjj/tty.js/
http://koding.com








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值