背景
對于一些只能在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