一、遠端連線的原理
遠端連線的好處
若用戶能利用本機從 windows 或其他作業系統透過文字或圖形介面登入既有的 linux 伺服器,便無需待在系統所處的硬體設備前操作系統,代表用戶得以從同一地點管理存放在不同位置的伺服器,或是跟其他地方的用戶共享單一伺服器的運算能力。此外,對於慣用圖形介面的使用者而言,以遠端連線搭配其他軟體可方便地在習慣的工作平台上操作 linux 文字介面,免去劃設虛擬機或安裝雙系統的困擾。SSH 協議
凡論及遠端連線便攸關資料在用戶與伺服器間的傳輸,目前已有許多傳輸資料的方式,其中安全殼層協定 (SSH, safe shell protocol) 是為保護資訊而設計的網路傳輸協定,常用於遠端登入系統,媒介用戶和伺服器間的指令與輸出。所謂「安全」是指相較於 telnet 及 rsh 等直接傳輸原始資料格式的明碼傳輸方式, 資料藉由 SSH 傳輸前會經過加密,接收方須知曉對應的解密規則才有辦法收訊。因此利用 SSH 遠端登入時,只要不洩漏解密規則,即使資料遭攔截也不至於暴露帳號密碼。SSH 的加密原理
SSH 的加密方式屬於非對稱加密,亦即資料依照不同規則加密和解密,其用意在於避免資料因規則曝光而洩漏。與非對稱加密相對的是對稱加密,由於資料加密或解密遵循相同規則,一旦輸出端與接收端任一方持有的規則被破解(例如駭客攔截了用戶與伺服器約定加密規則的訊息),雙方傳輸的資料都會曝光。在 SSH 協議中,輸出與接收端共有的加密規則稱為「公鑰」,而僅為接收端所持的解密規則稱為「私鑰」。在初次傳輸資料前,由於輸出端都沒有接收端分享的公鑰,輸出端無法傳送可為接收端之私鑰所解讀的加密資料。因此,利用 SSH 協議傳輸資料前,雙方要交換彼此的公鑰,接著才有辦法在輸出端將資料以公鑰加密成為密件,再由接收端依照對應的私鑰解密收訊。易言之, 利用 SSH 協議傳輸資料分為兩階段:(1) 建立連結協定階段。雙方交換彼此的公鑰,好讓對方能以自己可以解密的格式傳送密件。(2) 資料傳輸階段。輸出端以公鑰建立密件,接收端以私鑰解密。
SSH 協議的安全性體現於連結協定階段,雖然駭客可能會趁雙方交換公鑰的時候盜取家密規則,但是解密的私鑰僅保存在接收端,即使資料在傳輸過程中被攔截,僅憑公鑰也無法得知原始資訊。
SSH 遠端登入的連結協定階段
如下圖 (a) 所示,- 伺服器在啟用 SSH 連線服務時會先建立若干公鑰存放於/etc/ssh/ssh_host* ,同時也建立伺服器所需的私鑰。當用戶利用遠端終端機程式向伺服器要求連線後,
- 伺服器會將自己的公鑰傳送給用戶,
- 用戶會檢查 ~/.ssh/known_hosts 目錄,判斷伺服器公鑰是否曾經登錄過或是否曾經修改過,
- 一旦接受伺服器公鑰,用戶端會建立用戶公鑰以及相應的私鑰,
- 最後將用戶公鑰回傳給目標伺服器。如此一來,用戶和伺服器即建立起資料輸送協定,雙方都有彼此的公鑰,得以傳輸可供私鑰解碼的密件。
SSH 遠端登入的資料傳輸階段
建立連結協定後,用戶即可向伺服器傳送帳號密碼以登入系統,其流程如上圖 (b)。
- 用戶端輸入的密碼經伺服器公鑰加密後送往伺服器
- 伺服器端以伺服器私鑰解密,並基於帳號密碼系統驗證用戶身分
- 若成功登入,伺服器便將登入訊息以用戶公鑰加密回傳用戶端
- 最後用戶再以用戶私鑰解密,接收登入訊息並開始操作系統
二、藉 PuTTY 遠端登入 Linux 伺服器
遠端終端機軟體有許多種,此處介紹的是檔案小、功能齊全且免安裝的 PuTTY(官方網站下載點)。
介面說明
開啟 PuTTY 後首先見到的就是 Session 選單,在「連線對象與方式」的欄位中輸入連線目標的伺服器名稱或 ip 位置,接著填寫埠口代碼並選擇連線協議,最後點選最下方的開啟即可遠端連線伺服器。而「視窗及操作設置」欄位則可調整視窗外觀、終端機文字顯示以及鍵盤滑鼠操作等個人化設定,以下列舉各選單的功能,詳細內容可以查看 PuTTY 的官方手冊。
- Logging:設定 PuTTY 指令日誌的紀錄模式以及存放處
- Window:調整視窗大小或視窗內得用滾輪回朔的指令列數
- Appearance:調整滑鼠游標或是設定文字介面的字型、字體、樣式和字集
- Behaviour:設定關閉視窗的反應、開啟系統設定表單的方法或調整視窗顯示的方式
- Translation:設定文字編碼(當出現亂碼時可以檢查此處設置)
- Selection:界定滑鼠於終端機介面中點擊或選取的效果
- Colours:背景色、提示色或指令色等顏色設定
- Connection:設定連結頻率或是快速登入等方式
- SSH:設定 SSH 協議的版本
連線方式
儲存連線設置後,往後便不需重複此處所述的步驟,僅需雙擊個人設置名稱即可連線。
連線警告
初次連上特定伺服器的時候都會跳出一則警告,向用戶表示系統無法辨識連線對象的真實性,因此會提供伺服器公鑰的指紋供用戶參考,接著詢問用戶繼續連線的意願。這項警告是因為 SSH 協議雖能確保資料本身的安全性,卻無法防範駭客偽裝成連線對象,一旦用戶傳輸帳號密碼給冒用的伺服器,駭客便能向真正的伺服器要求連線並展開攻擊。值得補充一提的是,假如曾經連線該伺服器卻在遠端連線過程中再次跳出警告,代表伺服器端可能重設過系統並更新了公鑰或是碰上了攻擊等等,當向伺服器管理人或資訊專家求助。
三、常用的視窗參數設置
前面已經提到左方欄位可以調整個人化設定,接下來將介紹如何調整這些參數,並列舉三個改善用戶體驗的設定。
儲存參數設置的方法
首先點選欲調整的個人設置,然後點擊 Load 讀取之,接著便依照需求調整左側欄位的參數,調整完後點擊 Save 儲存,下次開啟視窗便能察覺參數的改變。(此處介紹的是啟動前設定,其實也可以在開啟視窗後於標題列點右鍵呼叫系統表單逐一調整。)
中文顯示與輸入
Appearance 不只能調整字型,也能調整字體的清晰程度或是光標的大小和顏色。
調整啟動後的視窗大小
在視窗大小欄位底下還能夠選擇是否允許在啟動後藉由拖曳調整視窗大小。另外藍色框中表示的是用滑鼠滾輪能回朔的指令和結果列數,數字越大就能回朔越多歷史命令。
自動記錄指令日誌
日誌選單可以設定系統自動紀錄方式、資料儲存處以及儲存檔名等。
四、結論
遠端連線伺服器的基礎是 SSH 協議,該傳輸方式採非對稱加密保障資料的安全性。利用 PuTTY 透過 SSH 協議得以實踐 Linux 伺服器的遠端登入,讓用戶在慣用的工作機同時操作位於它處的伺服器。
五、參考資料
- 中央研究院資訊服務處 (2018):〈putty安裝設定教學〉,中央研究院資訊服務處服務指引
- 阮一峰 (2011):〈數字簽名是什麼?〉,阮一峰的網路日誌
- 阮一峰 (2011):〈SSH原理與運用(一):遠程登錄〉,阮一峰的網路日誌
- 技術學習 (2016):〈SSH 協議原理、組成、認證方式和過程〉,簡書
- 鳥哥 (2011):〈遠端連線伺服器SSH / XDMCP / VNC / RDP〉,鳥哥的 Linux 私房菜
- 果凍想 (2019):〈詳解SSH原理〉,果凍想
- DotNet 碼農 (2013):〈putty使用教程(總結)〉,DotNet 碼農
- Gowind (2018):〈PuTTY设置〉,知乎
- TopGun_Viper (2017):〈圖解 SSH 原理〉,簡書
這篇文章寫得真好
回覆刪除非常感謝你的熱心
全宇宙的華人感謝你!