遠端控制家裡電腦的N種方案

2021-10-20 17:53:09 字數 3025 閱讀 1079

最近完美實現了從遠端區域網連線家裡電腦,進行遠端控制,這裡記錄一下幾種不同的方案。

首先要看看家裡電腦是用的哪個運營商的寬頻,如果是中國電信的寬頻,那麼實現起來是最容易方便的,那就是和中國電信申請分配乙個公網的ip位址,但是如果是中國移動的寬頻,那麼就比較麻煩,移動那邊是不會分配公網ipv4的位址的,但是不要擔心,我們也是有方案來解決。下面就描述一下不同的場景下的解決方案。

第一步是要能實現遠端控制家裡的電腦的開關機,這裡有兩種方案

如果是中國電信的寬頻並且分配了公網ipv4位址,可以採用wake on lan(wol)這種方式來進行遠端開關機,這種方式需要電腦通過有線網路連線家裡的路由器,在電腦的bios設定裡面開啟wol的選項,然後遠端電腦執行wol的命令,向家裡的電腦傳送wol的magic packet即可實現開機。但是這個方式需要有線網路的連線,如果沒有的話,也可採用新增乙個無線路由器放在家裡電腦旁邊,通過橋接的方式連到主路由器,然後家裡的電腦通過網線和這個無線路由器相連。另外,因為電信分配的公網ip位址會定期更改,最好是申請乙個網域名稱,在家裡的無線路由器裡面設定ddns來和這個ip做繫結,可以選擇花生殼的ddns服務,申請乙個網域名稱也很便宜。

如果是其他運營商的寬頻,無法獲得公網ipv4位址,那麼我們可以採用另外一種方式,就是購買乙個智慧型插座,連線家裡的無線路由之後,就可以遠端遙控插座的通電,並且在家裡電腦的bios選項中選擇通電後自動開機的選項(我的電腦的bios選項裡面是有乙個power restore的選項,選擇power on)。

實現了遠端控制電腦開機之後,我們就可以進行下一步操作了,這裡面也是有幾種不同的方案

1. 能拿到公網ipv4位址

這種方式是最簡潔的,只要在家裡的無線路由設定好埠**,把外網的埠對映到內網電腦的埠即可。之後就可以遠端連線這個公網ip位址加埠來訪問家裡的電腦。但是一般只有電信的寬頻才會分配ipv4位址。

2. 無法拿到公網ipv4位址,但是能拿到公網ipv6位址

目前各大運營商都已經支援ipv6公網ip位址的分配了,只要家裡的路由器能支援,就可獲取公網ipv6位址。如果遠端的電腦也支援ipv6,那麼也可以通過ipv6來進行遠端訪問。具體是否支援可以在遠端的電腦上訪問ipv6-test.com**來進行測試。如果遠端的電腦不支援,那麼可以嘗試開啟微軟的teredo隧道,來進行ipv6的封裝。在win10版本下,可以用管理員身份開啟powershell,然後執行netsh inte***ce teredo set state enterpriseclient server=default來開啟這個隧道,開啟之後檢視ipconfig,如果能分配2001開頭的ipv6位址,那麼一般來說就可以用ipv6服務了,可以再上ipv6-test.com來測試一下。不過我這裡遇到乙個奇怪的問題,就是開啟隧道之後,雖然獲取了2001的位址,但是仍然無法訪問ipv6,可能是我遠端電腦所處的網路設定的問題,例如路由器不支援這種隧道之類的。所以這種方案對我來說並不適用。

3. 內網穿透

我用的是移動的寬頻,在沒有公網ipv4,而且遠端電腦也不支援ipv6的情況下,應該如何來實現這個遠端訪問呢?不用著急,還是有解決方案的。那就是可以採用內網穿透的方式,也就是雖然家裡的電腦是處於內網,無法讓外網的電腦直接連線,但是家裡的電腦是可以連到外網的,因此我們可以通過反向埠對映的方式來建立乙個ssh隧道。一種方式是可以採用一些服務提供商的內網穿透服務,例如花生殼,提供了內網穿透,可以設定家裡的電腦繫結到乙個外網的位址和埠,然後遠端電腦可以訪問這個外網的位址和埠,從而訪問家裡電腦的服務。不過這種方式有個缺陷,那就是免費版的服務能繫結的埠數量有限,而且限制頻寬,例如花生殼限制是2個埠的繫結,以及頻寬不能超過1mbps(這個估計也是共享頻寬的,如果這個免費內網穿透的服務同時很多人用,那麼就很慢),有沒有其他方式來突破這個限制呢?

a. 實現ssh免密碼登入

在家裡的電腦執行ssh keygen,然後點回車即可,為家裡的電腦生成乙個公鑰和私鑰,然後執行ssh-copy-id -i ~/.ssh/id_rsa [email protected], 把這個公鑰拷貝到雲主機上即可。[email protected]是雲主機的使用者名稱和ip位址,之後需要ssh連線一次雲主機,測試一下是否不需要輸入密碼。

b. 在家裡的電腦配置反向埠對映

[unit]

description=autossh reverse proxy

after=network.target

[service]

environment="autossh_gatetime=0"

execstart=/usr/bin/autossh -m 0 -o "serveraliveinterval 60" -o "serveralivecountmax 2" -o tcpkeepalive=yes -nr 7777:localhost:22 [email protected]

[install]

wantedby=multi-user.target

登入家裡的無線路由器,配置埠**,允許外網訪問22埠對映到家裡電腦的內網ip位址和22埠上

c. 在雲主機上配置正向埠**(可選)

這一步是可選的,因為在以上步驟做完之後,在遠端電腦直接ssh -p7777 [email protected]即可實現訪問家裡的電腦。不過我們也可以在雲主機上配置另外乙個埠暴露給外網來訪問(可能在安全性上更好),例如我可以暴露8888這個埠,外網訪問8888,實際上會**到7777這個埠,然後再轉到家裡電腦的22埠。

在雲主機上執行以下設定

ssh -fcnl *:8888:localhost:7777 localhost
然後在遠端電腦執行以下命令,即可實現遠端登入家裡的電腦

ssh -p8888 [email protected]
d. 配置vnc實現遠端圖形控制

如果要實現vnc遠端連線,方式也是和上面的類似,也是建立乙個反向埠,把雲主機的埠繫結到家裡電腦的5901埠上,然後在雲主機上配置乙個正向埠**,把暴露給公網的埠**到之前和5901繫結的那個埠上。

以上就是我當前採用的方案,可以完美解決外網訪問內網的問題。

控制電腦 python遠端控制電腦

python擁有大量的第三方庫,且語法簡單。今天咱們就用python實現遠端控制電腦。按上所說,我們要完成需求,無非是把任務細分,首先,接收到訊息指令,再根據對應的指令執行相對應的操作,其中我們需要考慮乙個問題就是誤觸問題。python有大量的第三方庫,這裡我們借助itchat這個第三方庫 首先通過...

python 控制 python遠端控制電腦

python擁有大量的第三方庫,且語法簡單。今天咱們就用python實現遠端控制電腦。按上所說,我們要完成需求,無非是把任務細分,首先,接收到訊息指令,再根據對應的指令執行相對應的操作,其中我們需要考慮乙個問題就是誤觸問題。python有大量的第三方庫,這裡我們借助itchat這個第三方庫 首先通過...

通過ip遠端控制電腦

現在,很多人都用了不止一台電腦,而同時操作兩台電腦是一件比較麻煩的事情,所以,如果能夠使用一台電腦的滑鼠鍵盤顯示器,去遠端控制另一台電腦,那就方便多了。1 先確保本地計算機和遠端計算機,都處於同乙個網路內。這一點很重要,如果需要跨網路使用遠端桌面的話是非常麻煩的,還不如直接使用qq的遠端協助 什麼叫...