透過 SSH 連回家中的電腦(Ubuntu 16.04、中華電信小烏龜)
這篇文章原本發表在其他帳號,現在將它移回這裡。
前言
多日前,組裝了一台桌上型電腦,打算將它放在家裡當作個人工作站。假如跑大型運算時,就可以透過家裡的桌電來執行,因此出門在外就只需要攜帶文書機。(終於可以捨棄厚重的電競筆電了)
一開始筆者是使用 TeamViewer ,但是在網路速度不佳的環境下容易 lag。而筆者在使用時其實只需要終端機即可,不需要看到界面。所以開始嘗試其它透過終端機就可以完成的連線方式,例如 SSH 。
目的
- 在外工作時,可以遠端開啟工作站的終端機 。
設備說明
- 個人工作站(作業系統 Ubuntu 16.04)
- 文書機(作業系統 Ubuntu 16.04)
- 中華電信小烏龜: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 。
- 點選 DHCP SERVER
可以發現圖中頁面分成三個部份。我們可以從 EXISTING DHCP CLIENT 的 MAC Address 欄位尋找個人工作站的 MAC Address,便可以找到 Server 的 IP Address。
此 IP Address 為對內 ip
2. 將個人工作站的 IP Address 和 MAC Address 填入 ADD STATIC IP ADDRESS,完成後點選 apply。
此時的 IP Address可以選擇自己喜歡的填,但是要符合範圍,且不要與其他裝置衝突。若不知道填什麼,就填現在正使用的 ip 吧!
3. 完成!
接下來,設定路由器,讓它透過埠號就知道要找誰。
- 點選 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 設定教學,安全又方便,講解十分清楚。