阿拉平平
读完需要
分钟
速读仅需 3 分钟
最近正值项目上线,项目采用微服务架构并通过 K8s 落地,但某个服务启动后始终存在问题,于是开发要求进入容器排查。从运维的角度而言,开发不应该连接线上环境的服务器,于是我找到了 GoTTY。
1. 项目介绍
2. 下载安装
根据系统,下载对应的最新包,这里我下载的版本为 v1.0.1。
[root@localhost ~]# wget https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_amd64.tar.gz
解压并移动到 $PATH 中:
[root@localhost ~]# tar -zxf gotty_linux_amd64.tar.gz
# 注意解压后的文件是否有可执行权限,没有的话要加上
[root@localhost ~]# chmod +x gotty
[root@localhost ~]# mv gotty /usr/local/bin/
查看 GoTTY 的版本:
[root@localhost ~]# gotty --version
gotty version 1.0.1
3. 使用说明
3.1 基本用法
GoTTY 的使用非常简单,方法如下:
USAGE:
gotty [options] <command> [<arguments...>]
只需在要执行的命令前加上 gotty,GoTTY 便会创建网络连接,并监听 8080 端口。以查看磁盘空间为例:
[root@localhost ~]# gotty df -h
2021/06/22 15:00:00 Server is starting with command: df -h
2021/06/22 15:00:00 URL: http://127.0.0.1:8080/
2021/06/22 15:00:00 URL: http://[::1]:8080/
2021/06/22 15:00:00 URL: http://192.168.128.134:8080/
2021/06/22 15:00:00 URL: http://[fe80::7246:6047:4d9f:84b6]:8080/
2021/06/22 15:00:00 URL: http://192.168.122.1:8080/
之后通过浏览器就可以查看结果:

3.2 Web 端赋权
大家实际操作时会发现,在不加任何选项的情况下,Web 端的功能非常有限,但是加入一些选项就可以赋予其额外的权力。
-
Web 端可写
通过 GoTTY 打开的网页默认只有只读权限,但在某些场景下,Web 端会要求可写。此时,加上 –permit-write 或 –w 选项就可以允许其可写。
比如,编辑某个文件可以这样执行命令:
[root@localhost ~]# gotty -w vi test.txt

-
Web 端传参
除了赋予 Web 端可写的权力,GoTTY 也支持加入 –permit-arguments 允许从 Web 端传参。
以常用的 top 命令为例,方法如下:
[root@localhost ~]# gotty --permit-arguments top
比如要调整显示的间隔时间,可以在 URL 的末尾加上 arg 传参:
# 设置 top 的间隔时间为 1 秒,等价于 top -d 1
/?arg=-d&arg=1
3.3 安全性
在之前的示例中,我们对 Web 端的访问可以说是毫无限制,这无疑存在安全隐患。GoTTY 还有一些选项可以增加访问的安全性。
-
身份验证
通过 –credential 或 -c 选项可以开启身份验证。
[root@localhost ~]# gotty -c admin:admin df
开启验证后,从 Web 端访问必须输入指定的用户名和密码。
-
随机 URL
GoTTY 还可以通过 –random-url 或 -r 选项在 URL 末尾生产一串随机字符串。
[root@localhost ~]# gotty -r df
2021/06/22 15:03:41 Server is starting with command: df
2021/06/22 15:03:41 URL: http://127.0.0.1:8080/zs8nsuez/
2021/06/22 15:03:41 URL: http://[::1]:8080/zs8nsuez/
2021/06/22 15:03:41 URL: http://192.168.128.134:8080/zs8nsuez/
2021/06/22 15:03:41 URL: http://[fe80::7246:6047:4d9f:84b6]:8080/zs8nsuez/
2021/06/22 15:03:41 URL: http://192.168.122.1:8080/zs8nsuez/
通过与字符串的拼接,会生成随机 URL,从而降低地址泄露的风险。从浏览器访问的效果如下:
-
启用 TLS/SSL
# 这里的证书为工具生成的自签证书。
[root@localhost ~]# gotty -t --tls-crt ./server.crt --tls-key ./server.key df
此时再用 HTTPS 来访问,可以看到,连接已经是安全的了:
3.4 配置文件
GoTTY 默认的配置文件为 ~/.gotty,这个文件不会自动生成,需要手动创建。创建完成后,可以把之前的选项都加入到配置文件中:
[root@localhost ~]# vi ~/.gotty
# 监听端口
port = "8080"
# 允许可写
permit_write = true
# 允许传参
permit_arguments = true
# 开启身份验证
enable_basic_auth = true
# 设置用户名和密码
credential = "admin:admin"
# 开启随机 URL
enable_random_url = true
# 开启 TLS/SSL
enable_tls = true
# 指定证书
tls_crt_file = "~/server.crt"
# 指定密钥
tls_key_file = "~/server.key"
通过配置文件,我们还可以自定义 Web 端的标题、字体大小以及其它选项值等,完整的配置文件可以参考这里[2]。
4. 写在最后
References
[1]
GoTTY: https://github.com/yudai/gotty
[2]
这里: https://github.com/yudai/gotty/blob/master/.gotty
原文始发于微信公众号(阿拉平平):GoTTY 使用指南:如何将终端分享到 Web 端
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/287741.html