背景
对于一些只能在ubuntu上运行的脚本,并且这个脚本会在ubuntu上通过网页展示运行结果。我们希望可以使用windows远程操控ubuntu,在windows上查看网页内容。
方法
start cmd.exe /k "sshpass -p passwd ssh name@xxx.xxx.xxx.xxx "cd /home/hhh; /usr/bin/xvfb-run -a ./home/hhh/scripts.sh -p 8081""
start http://127.0.0.1:8081/
sshpass -p passwd ssh -L 8081:localhost:8081 name@xxx.xxx.xxx.xxx -N
上述脚本首先是自动通过sshpass远程登录ubuntu,然后运行脚本程序,这个脚本会生成一个网页并通过ubuntu的8081端口转发出来。然后我们在windows上打开一个网页,并将ubuntu的网页内容转发到windows上。
其中一些命令的详细解释:
- sshpass:可以自行搜索如何在windows上安装sshpass。这个工具可以使用户通过命令行的方式在windows的终端上远程自动输入密码登录ubuntu
- xvfb-run -a :
- xvfb-run :调用 X 虚拟帧缓冲器(X Virtual Framebuffer),允许在无图形界面的环境中运行需要 GUI 的程序。
- -a :自动分配一个未被占用的显示号(例如 :1、:2 等),避免手动指定。
- -L 8081:localhost:8081
本地端口转发(Local Port Forwarding) :- -L 表示“本地转发”。
- 8081 是本地计算机的监听端口。
- localhost:8081 是远程服务器的目标地址和端口(localhost 在此表示远程服务器的本地地址)。
作用 :所有发送到本地 8081 端口的流量会被 SSH 隧道加密后转发到远程服务器的 localhost:8081。
- -N
不执行远程命令 :
SSH 连接建立后,不运行任何远程命令(通常用于仅需要端口转发的场景)。 - 后台运行 :
添加 -f 参数,命令会在后台运行:例如ssh -f -N -L 8081:localhost:8081 name@xxx.xxx.xxx.xxx
- 远程端口转发 :
如果需要将远程端口暴露给外部,可以使用 -R,但需谨慎使用:ssh -R 8081:localhost:8081 name@xxx.xxx.xxx.xxx