Share your terminal over the web
在做运维的的时候,最怕的事就服务器出现问题而你现在不在电脑旁。无法立刻ssh上去查看服务器有什么问题。从别人借来的电脑上也许就没有你所需要的环境。这时候有一个web终端就好了,只要打开浏览器,就可以连上服务器操作了。现在就有很多神器,下面我来介绍一个ttyd的终端神器。
- Install on Linux
sudo apt-get install cmake g++ pkg-config git \
vim-common libwebsockets-dev libjson-c-dev libssl-dev
git clone https://github.com/tsl0922/ttyd.git
cd ttyd && mkdir build && cd build
cmake ..
make && make install
- 生成后台进程
nohup ttyd -r 60 -u ray bash \
2>/var/log/ttyd/error.log \
1>/var/log/ttyd/access.log 2>&1 >/dev/null &
就可以通过 http://localhost:7681 查看了。
- 我们要通过https访问,而且还想谁才可以使用,所以想到用nginx转发。
- 配置nginx
upstream my_server {
server 127.0.0.1:7681;
keepalive 2000;
}
server {
listen 80;
server_name bash.blog.rayhome.cc;
client_max_body_size 1024M;
location / {
proxy_pass http://my_server;
proxy_set_header Host $host:$server_port;
proxy_set_header x-Real-IP $remote_addr;
proxy_set_header x-Forwarded $remote_addr;
#这一步很重要,代理wss用的
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
listen 443 ssl;
ssl_certificate fullchain.pem;
ssl_certificate_key privkey.pem;
# HTTP Basic配置
auth_basic "Bash Server On blog.rayhome.cc";
auth_basic_user_file /etc/nginx/ttyd_passwd;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
}
- 这样我们就可以通过 https://bash.blog.rayhome.cc 访问了,而且要输入密码过可以。