SSH 遠端連線回家中的 Windows 電腦

前陣子為了想玩 Deep Learning ,買了一張近兩萬元的顯卡。結果沒用多久就收到泰國的工作,家裡的桌電就一直擺著生灰塵,實在太痛心了。為了能夠更有效利用桌電,就想到用 ssh 的方式連回家裡操作。
網路上其實有蠻多將 Windows 作為 ssh 伺服器的方式,但因為家裡電腦並不是直接連接網路,中間還隔了一層小米路由器,我就把部署的過程一步步放上來。

Windows 主機設置

由於桌電是 Windows 10 的作業系統,基本上已經支援 SSH 的伺服器部署。不過這不是一般人會使用到的功能,所以預設是關閉的。我們必須到設定>應用程式與功能的地方把他打開。

到應用程式畫面後,點選管理選用功能
圖片

進到裡面之後,確認清單中有沒有 OpenSSH 伺服器 並且安裝,如果沒有的話在新增功能 的選項裡安裝。要特別注意是 OpenSSH 伺服器,不是 OpenSSH 用戶端。

接下來用系統管理員身分打開 PowerShell,並輸入以下指令:

1
2
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

第一行是用來開啟 Server,第二行則是讓系統開機是自動啟用。

接下來要確認防火牆是否有阻擋 SSH 伺服器的運行,我們可以在設定裡找到防火牆,並確認是否有在允許的清單中。如果不是採用 Windows 放火牆的人則要到防火牆的軟體中確認。

圖片
圖片
圖片

基本上到這一步 Windows 的 SSH 伺服器就設定完畢了。

路由器設置

為了讓其他電腦可以辨識這台主機,我們通常都會採用 IP 來定位。但如果今天有在家中安裝 wifi 分享器等東西,電腦接收的 IP 是由路由器配給的。即便我們在 CMD 輸入 ipconfig 得到的 IP 位置也不是真正的 IP 位置,就如同下面的地址一樣。
圖片

這有點像你要寄信給公家機關的某個人,填寫的地址一定公家機關地址,而後再由總機轉交給你要寄信的人。遠端連線進來也是要找到路由器所在的位置,再有路由器轉到要連接的電腦主機。

因為我是採用小米路由器,這裡就以小米來介紹。首先用瀏覽器輸入 192.168.31.1 進到小米的操作頁面,並點選「常用設置」的「上網設定」,在上網信息所顯示的就是路由器所在的位置。
圖片

這裡可以看到 IP 位置與剛剛電腦顯示的不同,這是別人從外連進來可以辨識的真正 IP 位置。但我們從外面連進來會先進到路由器,我們必須告訴路由器要連線的桌機在哪,所以我們還必須多一層設置。

這裡點選「進階設定」的「通訊埠轉發」,並點選「新增規則」。因為 ssh 預設閘道為 22, 這裡為了方便我們就設定「外部埠」及「內部埠」為22,名稱隨意填,協議選擇 TCP,內部 IP 位置則填入剛剛用 ipconfig 查到的 IP。
圖片

新增完成後,別忘了把網頁拉到最底下點選「儲存並生效」。我在這裡就是忘記點選這個,結果搞了幾個小時一直連不進來。

SSH 連線登入

到這一步總算是完成啦!基本上最後是最簡單的部分,也就是用其他電腦連線到你的桌機。要注意的是如果其他電腦是 Windows 10,也是要到設定去安裝 OpenSSH 用戶端。
接下來輸入以下指令

1
ssh 使用者名稱@實體IP位置

使用者名稱為主機的使用者,實體IP位置則是剛剛小米路由器顯示的IP位置,輸入完主機的密碼就大功告成啦!

如果有想要進一步了解如何用手上電腦連接遠端的 Jupyter 伺服器,可以參考我的下面這篇文章

祝大家連線愉快~

參考資料

  1. 如何使用 SSH 远程控制一台 Windows 服务器