HiNAS系统里面有这个ttyd的终端,是通过网页访问,安装了这个就可以不用登陆宝塔面板,也不用切换到桌面运行Putty,其实Putty一直在用,蛮好用的,就是配置修改之后不保存,每次连接的时候要修改一次,有些麻烦。然后才想到要安装ttyd这个web终端。
通过度娘找资料,安装其实也挺简单,但是通过github下载,就是一件让人头疼的事。速度太慢了。看看什么时候有空就找找加速访问github的方法。暂时先忍耐一段时间吧。
不过ttyd这个最好不要用到生产环境,不安全。
想一想,任何人都可以通过浏览器直接就打开你服务器上的终端,那是多么可怕的一件事。
反正现在是在自己折腾,用的闲置笔记本,里面什么数据都没有,也就没有什么可以担心的了。
下载ttyd:
wget -O ttyd https://github.com/tsl0922/ttyd/releases/download/1.7.2/ttyd.x86_64
添加执行权限:
chmod +x ttyd
移动目录:
mv ttyd /usr/sbin
这样就安装完成了。感觉就像是windows里面下载了一个绿色免安装的程序,还是单文件的。
安装完之后,查看版本信息:
ttyd -v
显示是1.7.2版,这是目前最新的版本。
运行ttyd:
ttyd bash
运行之后就可以通过浏览器http://ip:7681进行访问了。
根据度娘查到的资料显示:
ttyd并没有保持后台运行,访问7681也不需要任何密码验证,非常不安全,我们要为ttyd创建一个systemd服务并设置用户名、密码验证。
新建一个服务,创建一个ttyd.service文件:
vi /etc/systemd/system/ttyd.service
将以下内容复制粘贴进去:
[Unit] Description=ttyd After=network.target [Service] ExecStart=/usr/sbin/ttyd -c user:user.password bash [Install] WantedBy=multi-user.target
用户名是user,密码是user.password,可根据实际情况修改。
文件创建完毕后让daemon生效:
systemctl daemon-reload
创建好服务之后就可以通过systemctl的命令管理了:
#启动ttyd systemctl start ttyd #停止ttyd systemctl stop ttyd #重启ttyd systemctl restart ttyd #开机启动 systemctl enable ttyd
资料上还有通过nginx反向代理实现域名访问ttyd的方法,暂时用不上,就不记录了。
运行ttyd服务后再次访问,发现网页会弹出输入用户名密码的界面,这跟神雕大神的ttyd终端好像有点不太一样,神雕大神的ttyd终端是进入终端界面了之后才需要输入系统登陆密码,跟ssh连接一样。
通过度娘查资料的时候发现了ttyd的一些用法,其中有一项是说ttyd支持ssh,根据资料的命令代码,将创建好的ttyd服务配置文件修改一下,改成下面这样:
[Unit] Description=ttyd After=network.target [Service] ExecStart=/usr/sbin/ttyd login [Install] WantedBy=multi-user.target
保存退出之后,重载一下daemon,让daemon生效:
systemctl daemon-reload
再重启一下ttyd服务:
systemctl restart ttyd
这样通过web访问ttyd的时候就跟神雕大神HiNAS里面的ttyd一样了,连接之后需要输入系统用户和密码才能使用。
这里有个权限问题,如果想要用root用户登陆ttyd的话,需要用root权限来运行ttyd,并且要有可读/etc/securetty文件的权限,度娘查到的资料如下:
注意:如需root身份登录终端,需要在属主属组为 root 的 /etc/securetty文件中增加可登录的终端类型pts/0 pts/1 pts/2,当然也需要运行 ttyd 程序的用户有可读 /etc/securetty 文件的权限(当然也就是以 root 身份启动 ttyd 服务)。
所以,为安全性考虑,不建议以 root 身份启动 ttyd 服务,也就不建议直接以 root 账户登录 ttyd websockets页面伪终端。
先将配置修改成以root权限启动,内容如下:
[Unit] Description=ttyd After=syslog.target After=network.target [Service] ExecStart=/usr/sbin/ttyd -p 7681 login Type=simple Restart=always User=root Group=root [Install] WantedBy=multi-user.target
记得要让deamon生效:
systemctl daemon-reload
重启一下ttyd服务:
systemctl restart ttyd
修改/etc/securetty文件:
vi /etc/securetty
在文件末尾增加如下内容:
pts/0 pts/1 pts/2
再访问ttyd就可以用root用户登陆了。