【windows10】基于SSH反向隧道公網ip端口實現遠程桌面
- 1.背景
- 2.SSH反向隧道
- 3.遠程連接電腦
1.背景
?Windows 10遠程桌面協議的簡稱是RDP(Remote Desktop Protocol)?。
RDP是一種網絡協議,允許用戶遠程訪問和操作另一臺計算機。
遠程桌面功能僅適用于Windows 10專業版和企業版,家庭版無此功能!
目前遠程桌面是一款Windows10提供的內置遠程工具,未來windows11可能會移除!
遠程桌面旨在連接的兩臺可以ping連接的計算機(同一局域網內,或者通過公網ip端口映射)
博主的操作系統windows10 專業版
如果在同一局域網您是可以ping通對方的windows系統的ip地址,正好對方計算機有遠程桌面功能(家庭版沒有),并且啟用遠程桌面。那么您此時通過該IP地址就可以遠程對方電腦!
然后您可以通過遠程桌面進行文件傳輸或提供遠程技術支持。
特別要注意,需要關注防火墻是否允許遠程桌面通過!
在Win10的遠程桌面設置中,防火墻的配置是一個關鍵因素。忽略了防火墻設置,可能導致無法成功建立遠程桌面連接。請按照以下步驟進行操作。
步驟1. 在搜索框中輸入“允許應用通過Windows防火墻”,然后打開相關設置。
步驟2. 確保“遠程桌面”已經被允許通過Windows防火墻。如果沒有,請點擊右上角的“更改設置”選項,勾選“遠程桌面”,然后點擊“確定”。
以上場景相信大家都用的很熟悉!
那么問題來了,兩臺windows10電腦在各自局域網,都可以上網,如何通過windows10遠程工具遠程?
這在工作中也是常見的,目前大家比較常見的解決辦法是使用第三方遠程控制軟件:
TeamViewer、AnyDesk、一鍵遠控、rustdesk等。
其實有很多方法,本博主介紹SSH反向隧道實現遠程桌面的訪問。
SSH反向隧道允許內網設備主動連接到公網服務器,從而繞過防火墻或NAT的限制,建立一條從外網訪問內網的通道。
通過ssh的實現如下:
通過SSH的-R參數,可以將內網機器的端口轉發到公網服務器的某個端口,這樣外部的請求可以通過公網服務器的端口訪問到內網服務。例如將內網服務器A的22端口轉發到公網服務器B的8888端口,然后通過B的端口訪問A。即反向隧道可以實現遠程訪問。
普通的SSH連接可能會因為超時斷開。autossh能夠自動重新連接,確保隧道持久。為了更好的效果您可以安裝autossh,并指定監控端口來檢測連接狀態,這有助于維持穩定性。
2.SSH反向隧道
SSH(Secure Shell)可以實現兩臺不同局域網中的Windows 10電腦進行遠程連接!
SSH反向隧道可以實現從公網訪問內網設備(如家庭或公司內網的計算機),尤其適用于設備位于防火墻或NAT后的場景。以下是具體實現原理、步驟及注意事項:
2.1 SSH反向隧道的核心原理
SSH反向隧道通過讓內網設備主動連接到公網服務器(如云主機),建立一條反向通道,將內網服務的端口映射到公網服務器的指定端口,從而實現外網用戶通過公網服務器訪問內網服務。其核心命令為 ssh -R,具體流程如下:
第1,內網設備A主動連接公網服務器B,建立反向隧道。
第2,公網服務器B監聽指定端口,并將流量轉發到內網設備A的本地服務端口(如SSH的22端口、遠程桌面的3389端口)。
第3,外網用戶通過訪問公網服務器B的映射端口,間接訪問內網設備A的服務。
2.2 實現遠程訪問的步驟
第1. 公網服務器B的配置
A. 修改SSH配置:
在B的/etc/ssh/sshd_config中啟用GatewayPorts yes
即允許外部訪問轉發端口如果修改了配置,重啟SSH服務:
sudo systemctl restart ssh檢查SSH服務狀態:
sudo systemctl status ssh
.如果返回類似“active (running)”,說明SSH服務已經運行。
.如果返回“inactive”或“not found”,則需要安裝或啟用。
B.開放防火墻端口:確保公網服務器的防火墻或安全組開放映射端口(如10010或者53700)。
第2. 內網設備A的操作
在A上執行命令,建立反向隧道:
以轉發SSH服務為例:
ssh -fCNR *:遠程端口:localhost:本地端口 用戶名@公網服務器IP
# 示例:將A的22端口映射到B的12345端口
ssh -fCNR 12345:localhost:22 root@B_IP
ssh -R 9999:localhost:3389 用戶名@203.0.113.10 # cmd終端關閉就停止建立反向隧道參數說明:
-R:反向隧道;
-C:壓縮數據,減少傳輸流量
-f:后臺運行;
-N:不執行遠程命令以autossh為例,使用autossh保持隧道穩定:
autossh -M 監控端口 -fCNR 遠程端口:localhost:本地端口 用戶名@B_IP
# 示例:監控端口5678,映射SSH服務
autossh -M 5678 -fCNR 12345:localhost:22 root@B_IP
第3. 外網用戶訪問內網服務
通過SSH或瀏覽器訪問公網服務器B的映射端口:
對于linux用戶連接到內網設備A的SSH服務:ssh -p 12345 內網用戶名@B_IP
對于適用于Web服務,通過瀏覽器訪問如http://B_IP:映射端口
本博客是遠程桌面,可以通過遠程桌面直接輸入B_IP:映射端口 登錄內網,然后輸入用戶名和密碼進行遠程訪問。
3.遠程連接電腦
遠程電腦啟用遠程桌面并允許防火墻通過遠程桌面后,您便可以進行遠程連接操作了。
步驟1. 按下“Win + R”組合鍵,在彈出的運行窗口中輸入“mstsc”命令,以啟動遠程桌面連接工具。
步驟2. 在彈出的遠程桌面連接窗口中,輸入目標計算機的 IP 地址,然后點擊“連接”按鈕。
處于隱私,123.181.16.232:53700為示例ip:port
步驟3. 輸入目標計算機的用戶名和密碼,即可進行遠程控制。