前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用腾讯云轻量服务器自建WebSSH

使用腾讯云轻量服务器自建WebSSH

原创
作者头像
卖女孩的火柴
发布2023-07-14 21:40:52
6762
发布2023-07-14 21:40:52
举报
文章被收录于专栏:施主借个关注施主借个关注

安装Web环境

登录到服务器后,安装Web服务相关软件:

更新软件源

代码语言:javascript
复制
sudo yum update

安装Apache、PHP

代码语言:javascript
复制
sudo yum install httpd php

启动Apache

代码语言:javascript
复制
sudo systemctl start httpd  

创建网站根目录:

代码语言:javascript
复制
sudo mkdir /var/www/html/webssh

安装WebSSH2

WebSSH2是一个通过网页访问Linux SSH服务器的开源组件:

安装依赖环境

代码语言:javascript
复制
sudo yum install python3 python3-pip python3-devel 
代码语言:javascript
复制
pip3 install tornado pyte websocket-client

下载源码包

代码语言:javascript
复制
wget https://github.com/billchurch/webssh2/archive/master.zip

解压

代码语言:javascript
复制
unzip master.zip  

修改配置文件,设定访问端口等:

代码语言:javascript
复制
python
vim webssh2/webssh/settings.py
PORT = 8080  
HOST = 'your_server_ip'

运行WebSSH2服务:

代码语言:javascript
复制
python3 run.py

添加用户验证

使用Flask提供登录接口:

代码语言:javascript
复制
python
from flask import Flask, request, jsonify
import pwd
app = Flask(name)
@app.route('/login', methods='POST')  
def login():
username = request.form.get('username')
password = request.form.get('password')   
user = pwd.getpwnam(username)
if user.pw_uid == 0 or pwd.getpwall():
    resp = {'success': True}
else:
    resp = {'success': False}
return jsonify(resp)
if name == 'main':
app.run()

前端调用接口验证后再连接WebSSH。

前端实现

使用Vue实现简单的登录页面:

代码语言:javascript
复制
js
data: {
  username: '',
  password: ''
},
methods: {
  login() {
axios.post('/login', {    
  username: this.username,
  password: this.password 
}).then(res => {
  if(res.success) {
    // 连接WebSSH  
  }
})
  }
}

配置域名

  1. 在腾讯云解析域名到服务器IP。
  2. Apache配置虚拟主机:
代码语言:javascript
复制
<VirtualHost *:80>
  ServerName webssh.example.com
  DocumentRoot /var/www/html/webssh
</VirtualHost>

重启Apache。

后续优化

启用HTTPS

代码语言:javascript
复制
 # 安装certbot
  sudo yum install certbot 
 
  # 申请证书
  sudo certbot certonly --webroot -w /var/www/html -d webssh.example.com

修改Apache配置启用HTTPS:

代码语言:javascript
复制
apacheconf
  <VirtualHost *:443>
    ServerName webssh..tencent.com
    DocumentRoot /var/www/html/webssh
    
    # 添加证书文件路径
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/webssh.example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/webssh.example.com/privkey.pem
  </VirtualHost>

使用Flask-SQLAlchemy定义User模型,包含用户名、密码等字段。

前端实现注册页面,POST提交注册数据到后端。

后端验证数据,成功则创建新User写入数据库。

代码语言:javascript
复制
python
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    password = db.Column(db.String(256))
    
    def __init__(self, username, password):
        self.username = username
        self.password = password

双因素认证

1. 用户绑定Google Authenticator。

2. 登录时除了密码外,还需要输入动态验证码。

3. 后端验证密码和动态码都正确才登录成功。

代码语言:javascript
复制
python
from flask_otp import OTP

otp = OTP()

@app.route('/login', methods=['POST'])
def login():
    password = request.form.get('password') 
    token = request.form.get('token')
    
    if password_correct and otp.verify_totp(token):
        return success
    else:
        return failed  

设置访问权限

1. 为User模型添加权限字段,如is_admin。

2. 访问接口前校验用户权限。

代码语言:javascript
复制
python
@app.route('/admin')
@login_required
def admin():
    if current_user.is_admin:
        return "Admin Page"
    else:
        return "Permission Denied"

审计日志

1. 定义日志模型,记录用户操作及时间等。

2. 关键路径写入日志。3. 使用ELK收集和分析日志。

代码语言:javascript
复制
python
@app.route('/log')
def log():
    log = AuditLog(user=current_user, action="View Log")
    db.session.add(log)
    db.session.commit() 

总结

通过腾讯云轻量应用服务器,我们实现了基于Web的SSH连接平台,相比Xshell有更多可能。

使用云服务器可以轻松获取计算资源,更专注于功能和业务开发。

云平台提供的负载均衡、安全防护等能增强系统稳定性。

本教程帮助感兴趣的人快速上手实践Web SSH。

可以基于此进行二次开发,打造更强大的Web终端管理平台。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装Web环境
    • 安装Apache、PHP
      • 启动Apache
        • 创建网站根目录:
          • 安装WebSSH2
            • 下载源码包
            • 解压
            • 修改配置文件,设定访问端口等:
            • 运行WebSSH2服务:
        • 安装依赖环境
          • 添加用户验证
            • 前端实现
              • 配置域名
                • 后续优化
                  • 双因素认证
                  • 设置访问权限
                  • 审计日志
              • 总结
              相关产品与服务
              负载均衡
              负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com