基于ttyd实现Web shell
最近遇到了一个小难题——我无法ping
到我的服务器了,具体原因就是IP被封禁了,不过域名并没有被封禁,所以基于域名的服务还是可以正常提供,但是我无法登录我的服务器,自然无法进行查看日志等操作。
简单搜索了一下,发现有以下解决方案:
- 发工单给VPS客服,让他们帮忙改IP,不同VPS标准不一样,有的可以免费改,有的需要交钱。
- 用另外一台可以
ping
通的VPS作为跳板。
方案1对我来说有点昂贵,我的VPS提供商每改一次IP需要$3;方案2同理,额外花费了一台服务器的钱。不过好在我的域名没有被封禁,因此我就考虑使用 Web Shell 来解决问题。
经过翻阅相关帖子之后,最终选择了ttyd作为我的 Web Shell 服务提供程序,下面简单记录一下安装过程。当然,首先我租了一台按小时计费的跳板机,等部署完毕之后销毁,能省一点是一点嘛。
注意:使用 Web Shell 首要考虑的事情就是安全!安全!还是™的安全!
- 安装:通过参考官方说明,Linux端可以直接下载二进制包或者源码安装,我选择的是直接下载二进制包安装,通过
arch
查看Linux版本,然后下载对应的客户端即可。 - 修改权限:解压二进制包,并注意让二进制文件拥有执行权限,否则
ttyd
无法启动。 - 启动
ttyd
:/usr/local/ttyd/ttyd -p 19999 -i 127.0.0.1 -c user:password -m 1 bash
,这里的参数代表的含义依旧参考官方手册,我使用的是只允许本地通过19999端口进行连接,同时需要输入相应的账号密码进行验证,并且最多只支持1个客户端连接。 配置
nginx
反向代理:这样就可以通过域名进行访问ttyd
提供的 Web Shell 服务了。location / { proxy_pass http://127.0.0.1:49999; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \"upgrade\"; proxy_redirect off; proxy_read_timeout 3600; }
设置开机自启动
[Unit] Description=ttyd Service After=network.target [Service] Type=simple User=user Restart=on-failure RestartSec=5s ExecStart=/usr/local/ttyd/ttyd -p 19999 -i 127.0.0.1 -c user:password -m 1 bash WorkingDirectory=/home/user/ [Install] WantedBy=multi-user.target
如果你认为这篇文章还不错,可以考虑 为作者充电 ⚡️