透過 SSH 連回家中的電腦(Ubuntu 16.04、中華電信小烏龜)

Sopper Lee
7 min readOct 25, 2020

--

這篇文章原本發表在其他帳號,現在將它移回這裡。

前言

多日前,組裝了一台桌上型電腦,打算將它放在家裡當作個人工作站。假如跑大型運算時,就可以透過家裡的桌電來執行,因此出門在外就只需要攜帶文書機。(終於可以捨棄厚重的電競筆電了)

一開始筆者是使用 TeamViewer ,但是在網路速度不佳的環境下容易 lag。而筆者在使用時其實只需要終端機即可,不需要看到界面。所以開始嘗試其它透過終端機就可以完成的連線方式,例如 SSH 。

目的

  1. 在外工作時,可以遠端開啟工作站的終端機 。

設備說明

  1. 個人工作站(作業系統 Ubuntu 16.04)
  2. 文書機(作業系統 Ubuntu 16.04)
  3. 中華電信小烏龜:D-Link

工具簡介

SSH

詳細可以看維基百科:Secure Shell
簡單來說,SSH 就是一種能讓我們連線至伺服端的方式,SSH 在傳輸時是以密文傳輸,再加上連線時,可以針對 Client 身份作驗證,相較來說是比較安全的連線方式。

內部網路與外部網路

內部網路,是指在同一個路由器下的電腦們 。在電腦連上路由器後,路由器會分配格式如 192.168.xxx.xxx 的 ip 位址給各個電腦。而電腦之間就可以透過對方的 ip 位址來進行通訊, 此時的網路通訊便屬於內部網路 ,而 192.168.xxx.xxx 的 ip 網路屬於對內 ip。

當我們需要取得其他人的資訊時,可以透過網路來取得,但是 若這個人不存在於內部網路(不在同一個路由器下) ,我們該怎麼辦呢?此時便需要透過外部網路來連接。

外部網路,當我們需要去連接不在內部網路的電腦時,我們就需要知道它的 對外 ip 。

以學校來比喻,甲到戊班都有 40 人,分別是 1~40 號,阿明一夥人是甲班的,小華是丙班。阿明一夥人是惡霸,喜歡欺負班上同學,每天午餐都會透過抽籤來決定要吃掉誰的便當。今天阿明一夥人抽到了 5 號,所以就把 5 號的便當吃光光了,但還是有點餓。他們又聽說別班的小華每天都會帶五個好吃的便單來學校,決定一起去嚐嚐,終於打聽到小華是丙班的。阿明一夥人就出發到丙班,但實在看不出來誰是小華,於是一夥人圍住坐在門邊的小新,叫小新去把小華的便當搶過來,不然就要讓他好看。

從上述的故事中,座號便是對內 ip,在班上透過抽籤,就可以知道誰的便當要遭殃了;班級是對外 ip,阿明一夥人要找到小華,還得先知道小華是哪班的;而小新就是路由器,會把阿明一夥人的需求告訴小華,叫小華把便當交出來。

操作流程

安裝 SSH

在個人工作站與文書機中安裝 SSH。

(此為 ubuntu16.04 安裝方法,其他系統不討論)

  • Step 1: 透過 apt 安裝 SSH

到個人工作站 & 文書機下的終端機輸入

sudo apt-get install ssh
  • Step 2: 確認安裝狀態

接著要確認的 Server 確認 ssh 有無被開啟。

到個人工作站下的終端機輸入

netstat -a | grep ssh

若發現有以下訊息,代表開啟成功!

tcp 0 0 *:ssh *:* LISTEN
  • 開啟 / 關閉 SSH
sudo service ssh startsudo service ssh stop

設定小烏龜

設定中華電信的小烏龜,讓它可以找到在小烏龜下的個人工作站。

可能小新是個邊緣人,根本不知道小華是誰,所以要讓小新認識認識小華。

首先,將個人工作站的內部 ip 設為固定

Step 1: 設定小烏龜(在個人工作站上)

小烏龜上的設定是要讓我們更方便地找到個人工作站,所以我們使用個人工作站來操作。

( 備註:其實也可以用同個內部網路的電腦來設定)

Step 2: 首先進入小烏龜設定頁面

通常至瀏覽器輸入 192.168.1.1 即可。若無法成功登入,可以看小烏龜貼紙上的內容。

Step 3: 將個人工作站的對內 ip 設成固定

內部網路通常為 DHCP ,也就是當你連上網路時,小烏龜會由設定好的 ip 範圍提供給您一組對內 ip ,而此 ip 為動態的,也就是非固定的。所以我們在透過 SSH 連線時,會因為對內 ip 的改變,而需要重新設定連線目標 。為了省掉麻煩,直接將對內 ip 設定為固定 ip

  1. 點選 DHCP SERVER
(由於有私人資訊,以綠色方形屏蔽。)

可以發現圖中頁面分成三個部份。我們可以從 EXISTING DHCP CLIENTMAC Address 欄位尋找個人工作站的 MAC Address,便可以找到 Server 的 IP Address。

此 IP Address 為對內 ip

2. 將個人工作站的 IP AddressMAC Address 填入 ADD STATIC IP ADDRESS,完成後點選 apply

此時的 IP Address可以選擇自己喜歡的填,但是要符合範圍,且不要與其他裝置衝突。若不知道填什麼,就填現在正使用的 ip 吧!

3. 完成!

接下來,設定路由器,讓它透過埠號就知道要找誰。

  1. 點選 Virtual Server。將設定內容填入 ADD VIRTUAL SERVER RULES
  • Name: 隨便取,看得懂就好。
  • Interface: 選取 WAN1_2。
  • Internal IP: 填入剛剛設定的固定 ip。
  • Internal startport: 22。
  • Internal endport: 22。
  • External startport: 2222,或其他未被佔用的埠號。
  • External endport: 2222,或其他未被佔用的埠號。
  • Protocol Type: Both。

設定完後,當我們連接到這台路由器的 Port 2222 ,路由器就會轉接到 Internal IP 的 Port 22。

假設對外 ip:111.111.111.111,對內 ip : 192.169.1.11。

那麼設定完小烏龜後,當我們連至 111.111.111.111:2222 時,便會透過小烏龜接上 192.168.1.11:22 。

完成以上設定後,便可以透過外部網路連線到個人工作站

連線方法

Step 1: 先確定個人工作站的對外 ip

最快的方法是使用個人工作站以瀏覽器開啟:http://www.whatismyip.com.tw/

出現的 ip 便是個人工作站的對外 IP 。

Step 2: 連線!

到 Client 下的 Terminal輸入:

  • Client:

username: 在個人工作站上的用戶名稱;hostname: Step 1 所查到的對外 ip;。

$ ssh [username]@[hostname] -p 2222

-p 2222: -p 後面的數字代表要連到的埠號。SSH 預設為22,但是我們在小烏龜是設定外網是 Port 2222 對應到個人工作站的 Port 22(詳細請看小烏龜設定部份)。所以這裡我們要設定 -p 2222,代表我們是要連到 hostname:2222 。

安全性設定

由於是 ssh 遠端連線,便會有安全上的疑慮。所以需要透過設定,來讓伺服端安全些,以下提供一些方法。

1. 不須使用時,請關閉 ssh。

username@server:~$ sudo service ssh stop

2. 設定公鑰私鑰,讓伺服端可以篩選登入用戶。

關於 公鑰私鑰設定 可以參考這篇:SSH 公開金鑰認證:不用打密碼登入 Linux 設定教學,安全又方便,講解十分清楚。

--

--

Sopper Lee

就讀國立中央大學機械工程系,研究所為國立臺灣大學生物機電工程系。目前從事自動化系統開發,提高昆蟲生產效率。