環境配置
之前就說要搭這樣一個環境,因爲本地調試感覺要修改很多本地的參數什麼的,怕跟Mac
自帶的一些配置給衝突,所以就還是想在vps
上調試,然後在本地VSCode
修改代碼。
發現這個輕量級IDE
真的是很強大,我能想到的功能,好像都已經有對應的插件了。
rmate安裝
這個是之前就在vps
上安裝過的,應該過程中沒遇到什麼問題。
wget https://raw.githubusercontent.com/sclukey/rmate-python/master/bin/rmate
chmod +x ./rmate
mv ./rmate /usr/local/bin/rmate
Remote VSCode插件安裝
安裝好這個插件,然後重啓使其生效。
Command + Shift + P
輸入Remote
,點擊Remote: Start Server
在終端連接vps
:
ssh -R 52698:127.0.0.1:52698 [email protected] -i private_key //因爲我是使用密鑰登錄vps,所以要有-i參數
然後在終端(即vps
中)輸入指令:
rmate -p 52698 filename
VSCode
就會自動打開這個文件。
原理
查了一下,主要是做了一個SSH
反向連接。rmate
的資料很少,都是使用方面的,沒有找到介紹原理的。
接下來寫的都是我理解的…以後如果發現不對的話,我會再來更正的:
在本地執行
ssh -R [服務器IP或省略]:[服務器端口]:[客戶端側能訪問的IP]:[客戶端側能訪問的IP的端口] [登陸服務器的用戶名@服務器IP] -p [服務器ssh服務端口(默認22)]
指令,其實是建立了一個反向連接隧道,使得在ssh
訪問服務器的52698
端口時,會被最終轉發到本地的52698
端口,當然這些端口都是可以隨意設置的。
ssh -R 52698:localhost:52698 [email protected]
我感覺應該是vps
通過執行rmate -p 52698 filename
將filename
文件內容以某種形式通過52698
端口發送,然後52698
與ssh 22
端口之間有個映射關係,這些文件又從22
端口發送給本地與22
端口建立ssh
連接的端口(圖中的51127),然後這個端口再將文件內容發送到本地的52698
端口,VSCode
的插件負責對這個端口接收到的數據進行處理,從而將傳輸過來的內容顯示到文件上。
抓取了一下在vps
執行rmate
之後的流量包。
??也看不出來啥東西。
這個圖是在發起SSH
反向連接時的連接情況,和關閉SSH
反向連接後的連接情況。
SSH
反向連接經常被用來做內網穿透,網上搜這個的時候會看到很多介紹內網滲透的具體過程的。emm…按那個說的意思,應該是在本地執行了SSH -R
指令之後就可以在VPS
上請求SSH
連接本地了。但是我試了一下不行…不知道是哪裏的問題,沒有再深究了。
(這個原理介紹的好草率。??)