ttyd网页ssh管理
纯 IPv6 服务器连接 SSH,需要本地网络支持 IPv6,或者连接支持 IPv6 的 VPS 连接通后使用。
ssh root@2400:xxx:xxx:xxx::xxx
# 指定端口
ssh root@2400:xxx:xxx:xxx::xxx -p5422
另外,可以通过 ttyd 实现网页 SSH,并且使用 cloudflare 打开代理,使支持 ipv4 和 ipv6,随时随地访问!
只需要 cloudflare 的二级域名打开小云朵即可,至于本机的ip地址可以通过路由实现动态更新或者本机安装动态更新程序。
# 1. 安装 ttyd
XML/HTML代码
- wget https://github.com/tsl0922/ttyd/releases/download/1.7.4/ttyd.x86_64 -O /usr/sbin/ttyd
- chmod +x /usr/sbin/ttyd
# 查看版本号
XML/HTML代码
- ttyd -v
XML/HTML代码
- #获取最新版本
- VER=$( curl --silent "https://api.github.com/repos/tsl0922/ttyd/releases/latest"| grep '"tag_name"'|sed -E 's/.*"([^"]+)".*/\1/')
- #下载二进制文件:
- ##For 64-bit
- curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.x86_64
- ##For aarch64
- curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.aarch64
- ##For arm
- curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.arm
- ##For i686
- curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.i686
XML/HTML代码
- sudo mv ttyd.* /usr/local/bin/ttyd
- sudo chmod +x /usr/local/bin/ttyd
从源代码构建
在 Linux 上安装 ttyd 的另一种方法是从源代码构建它。在 Debian/Ubuntu 上,使用命令:
XML/HTML代码
- sudo apt-get install build-essential cmake git libjson-c-dev libwebsockets-dev
- git clone https://github.com/tsl0922/ttyd.git
- cd ttyd && mkdir build && cd build
- cmake ..
- make && sudo make install
# 2. 测试
ttyd -W --ipv6 -p 2086 bash
# 使用支持 ipv6 的网络访问
http://[2400:xxx:xxx:xxx::xxx]:2086
# 3. 优化
# 3.1. 安全设置
ttyd -W --ipv6 -c user:password -p 2086 login
# -W 客户端可以输入,不然 shell 只能连接不能输入命令
# --ipv6 支持 IPv6 连接
# -c 客户端连接需要账号密码验证,格式为 用户名:密码
# -p 监听端口
# login 连接后需要系统登录才可使用 shell
# 3.2. 设置系统服务
# 新建服务
XML/HTML代码
- systemctl edit --force --full ttyd.service
XML/HTML代码
- [Unit]
- Description=ttyd
- After=network.target
- [Service]
- ExecStart=/usr/sbin/ttyd -W --ipv6 -c user:password -p 2086 login
- [Install]
- WantedBy=multi-user.target
# 编辑
# /etc/systemd/system/ttyd.service
# systemctl daemon-reload
# 3.3. 开机启动
# 设置自启
systemctl enable ttyd
systemctl start ttyd
systemctl status ttyd
# 3.4. 使用 nginx 反向代理
# 二级目录,可实际需要改根目录或其它路径
XML/HTML代码
- location ~ ^/ttyd(.*)$ {
- proxy_http_version 1.1;
- proxy_set_header Host $host;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_pass http://127.0.0.1:2086/$1;
- }
# 3.5. 使用域名访问并套 cloudflare 打开代理,使支持 ipv4 和 ipv6 访问
https://www.example.com/ttyd
除了直接运行 shell 外,ttyd 还可以有很多有趣的玩法,例如:
启动一个容器使用ttyd作为跳板登录其他服务器:
docker run -it --rm -p 7681:7681 tsl0922/ttyd
如果你想给网页上的每个人开个 docker 容器玩,可以用下面的命令启动 ttyd,这样每次打开网页都会进入 docker 容器内的 shell:
ttyd docker run -it --rm ubuntu bash
如果你想一打开网页就能直接 ssh 到另一个机器上(省去进入 bash 再执行 ssh),可以这样启动 ttyd:
ttyd ssh root@192.168.1.1
你甚至还可以直接执行一个 vim,这样打开进入网页后就只有一个 vim 编辑器可以操作:
ttyd vim