记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

ttyd网页ssh管理

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代码
  1. wget https://github.com/tsl0922/ttyd/releases/download/1.7.4/ttyd.x86_64 -O /usr/sbin/ttyd
  2. chmod +x /usr/sbin/ttyd
# 查看版本号
XML/HTML代码
  1. ttyd -v
也可以通过以下命令安装最新版本:
XML/HTML代码
  1. #获取最新版本
  2. VER=$( curl --silent "https://api.github.com/repos/tsl0922/ttyd/releases/latest"| grep '"tag_name"'|sed -E 's/.*"([^"]+)".*/\1/')
  3. #下载二进制文件:
  4. ##For 64-bit
  5. curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.x86_64
  6. ##For aarch64
  7. curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.aarch64
  8. ##For arm
  9. curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.arm
  10. ##For i686
  11. curl -LO https://github.com/tsl0922/ttyd/releases/download/$VER/ttyd.i686
下载后,将文件移动到您的路径:
XML/HTML代码
  1. sudo mv ttyd.* /usr/local/bin/ttyd
  2. sudo chmod +x /usr/local/bin/ttyd
从源代码构建
在 Linux 上安装 ttyd 的另一种方法是从源代码构建它。在 Debian/Ubuntu 上,使用命令:
XML/HTML代码
  1. sudo apt-get install build-essential cmake git libjson-c-dev libwebsockets-dev
  2. git clone https://github.com/tsl0922/ttyd.git
  3. cd ttyd && mkdir build && cd build
  4. cmake ..
  5. 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代码
  1. systemctl edit --force --full ttyd.service
# 粘贴以下内容,ctrl+x 点 y 回车保存退出
XML/HTML代码
  1. [Unit]
  2. Description=ttyd
  3. After=network.target
  4.  
  5. [Service]
  6. ExecStart=/usr/sbin/ttyd -W --ipv6 -c user:password -p 2086 login
  7.  
  8. [Install]
  9. 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代码
  1. location ~ ^/ttyd(.*)$ {
  2.     proxy_http_version 1.1;
  3.     proxy_set_header Host $host;
  4.     proxy_set_header X-Forwarded-Proto $scheme;
  5.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  6.     proxy_set_header Upgrade $http_upgrade;
  7.     proxy_set_header Connection "upgrade";
  8.     proxy_pass http://127.0.0.1:2086/$1;
  9. }
# 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

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):