编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

通过浏览器实现 Linux 终端访问 - ttyd 介绍

wxchong 2024-07-25 13:34:42 开源技术 36 ℃ 0 评论

大家都知道xshell等运维终端工具都是使用ssh的22端口。有的时候,服务器只允许开放一个业务端口对外,比如 tomcat的8080端口,若想通过这个端口访问服务器执行一些shell命令该如何做呢?

今天就为大家介绍一个开源的命令行工具:ttyd (https://github.com/tsl0922/ttyd)。它是一个可以自定义访问端口,并 通过浏览器实现终端访问 的开源工具,使用起来也非常非常简单。

安装

wget -c -O ttyd https://github.com/tsl0922/ttyd/releases/download/1.5.2/ttyd_linux.x86_64 
# 权限
chmod u+x ttyd 
# -p 指定监听端口启动 
./ttyd -p 7077 bash

大家看到了吗,几个步骤即可实现浏览器终端访问,下面我再演示一些用法。

示例

  • 启动时,开启登录验证
# 关键字 login ,默认校验启动应用的系统账户
./ttyd -p 8087 login bash
  • 开启自定义账户登录验证
# -c (格式: username:password)
 ./ttyd -p 8087 -c admin:admin123 bash
  • 使用 lrzsz 上传和下载文件
# 先在服务器上安装 lrzsz,(lrzsz是一个非常好用、简单的上传下载命令,rz 上传、sz 下载,如果你还不知道它,赶紧百度下,大大提高工作效率)
yum install lrzsz

补充

  • 通过 Nginx 代理 ttyd

实际的生产环境中,应用的访问基本都是通过 Nginx 进行代理访问的。ttyd 是基于websocket,需要 Nginx 开启websocket代理功能,必须明确设置Upgrade 和Connection 标题。

1)编辑 nginx.conf,在http区域内一定要添加下面配置

http { 
 # 增加map
 map $http_upgrade $connection_upgrade { 
 default upgrade; 
 '' close; 
 }
}

2) 编辑vhosts下虚拟主机的配置文件,在location匹配配置中添加如下内容

proxy_http_version 1.1; 
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "Upgrade";

举例:在 conf/vhost/ 新增配置 ttyd.conf

upstream ttyd_proxy{ 
 server 10.24.247.102:7077; 
} 
server { 
 listen 8087; 
 server_name 10.24.247.102; 
 access_log /root/ttyd_eccess.log; 
 proxy_set_header Host $host:$server_port; 
 proxy_set_header X-Real-IP $remote_addr; 
 proxy_set_header REMOTE-HOST $remote_addr; 
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 location /ttyd { 
 proxy_pass http://ttyd_proxy/; 
 proxy_set_header Host $host:$server_port; 
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade; 
 proxy_set_header Connection "upgrade";
 } 
}

3)访问 8087 端口

怎么样,是不是很方便,关键是不受ssh的限制,远程运维起来是不是方便多了 ~

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表