# 網路常見軟體、協定(FTP、TELNET 等) [TOC] Hello Guys, I'm LukeTseng. 本篇將來介紹 ip-address 跟 mac-address 的原理,若本篇文章有誤,歡迎各位指正,若你也喜歡這篇文章,不妨按下愛心跟追蹤我的個人頁面吧! 另外本篇文章主要針對上課內容製作筆記,斟酌參考~ ## FTP(File Transfer Protocol) FTP(File Transfer Protocol)直接翻譯就是檔案傳輸協定,專門用來在兩台電腦之間上傳和下載檔案。 假設你在學校寫好程式作業,想傳到家裡的電腦繼續改,就可以用 FTP。 FTP 使用明文傳輸,意思就是資料沒有加密。因此現代比較少單獨使用 FTP,反而搭配 SSH 使用 SFTP(Secure FTP)來加密傳輸。 而 FTP 採用主從式(Client-Server)架構,也就是客戶端對到一台伺服端。有一台主機作為 FTP 伺服器(用來儲存檔案),客戶端則用電腦(用戶端)連線並操作這台伺服器。 接下來 FTP 雙通道設計不像 HTTP 只用一個連線,FTP 同時開啟兩個 TCP 連線: * 控制通道(port 21):負責傳送指令與回應(如登入、切換目錄、開始下載/上傳)。 * 資料通道(port 20 / 動態 port):只用來真正傳檔案的資料。 ### FTP 傳輸流程 1. 建立連線:用戶端啟動 FTP 軟體,輸入伺服器位址、帳號和密碼,連到 FTP 伺服器。 2. 認證登入:輸入正確帳密後,登入成功。 3. 目錄導航:可透過 cd(切換目錄)、ls(檢視目錄)等指令查找和切換資料夾。 4. 檔案操作: - 上傳(put 指令) - 下載(get 指令) 5. 結束連線:當資訊傳輸完成,送出 quit 指令斷開連線。 ### FTP 使用方式 1. 圖形化介面:如 FileZilla、WinSCP 等軟體,透過拖拉可直接操作檔案。或是部分瀏覽器有支援 FTP,但要打指令,經過實測發現 chrome 可以做到。 2. cmd 操作: 開啟 cmd,輸入 `ftp [伺服器網址]`(`[]` 不用打)。 若想要試試看的話,以下這個網址可以測試 ftp 功能:https://www.smartftp.com/zh-tw/support/kb/2779 假設我輸入 `ftp ftp.cs.brown.edu`,會出現以下畫面,提示你輸入帳號: ![image](https://hackmd.io/_uploads/B1a_h5qgbx.png) 輸入完後會有 `ftp>` 提示可輸入指令: ![image](https://hackmd.io/_uploads/Hkeoh99g-e.png) 接下來就可以試試看啦: ![image](https://hackmd.io/_uploads/By9AhcqeWg.png) 在登入以後,可以用: * `ls`:列出檔案 * `cd [目錄名]`:切換目錄 * `get [檔名]`:下載檔案 * `put [檔名]`:上傳檔案 * `bye` 或 `quit`:離開 ## TELNET TELNET 是最早期的遠端連線技術,使用 TCP port 23。讓你可透過網路連線到遠端電腦,並在上面執行指令。 他同樣也是採用主從式架構,電腦執行 TELNET 軟體(用戶端),連線到遠端伺服器(TELNET 伺服器,通常開啟 TCP port 23)。 在 TELNET 用戶端連到伺服器後,伺服器可能會傳送歡迎訊息。 接下來還會做身份驗證,請求用戶端送出帳號密碼(都是明文,沒加密的)。 在上面輸入的每個字元、按鍵,TELNET 都會即時送到遠端伺服器。伺服器處理命令後,把結果回傳,會在電腦上看到結果。 TELNET 預設用 ASCII Code,但可以協商其他編碼(如 UTF-8),如果兩端設定不同,會出現亂碼問題。 在安全性問題上,TELNET 所有資料都是用明文傳送,包括輸入的帳號、密碼和指令。只要中途網路被監控,就會被第三方竊聽。所以後來都由 SSH(Secure Shell)來取代了。 ### 如何用 TELNET? 在 Windows 開啟 TELNET 的功能可至:https://unauna1129.medium.com/windows-%E9%96%8B%E5%95%9Ftelnet%E5%8A%9F%E8%83%BD-484e9f03f9b4 同樣打開 cmd,連線指令打:`telnet [伺服器 IP] [port,預設23]` 然而因為現在完全沒人再用這東西了,所以也成為時代的眼淚,接下來就不會實際操作,而是稍作說明。 常見指令流程: - `open [伺服器位址]`:建立連線 - `quit`:離開 TELNET - 直接輸入命令操作遠端主機(如 Linux 指令:`ls, cd, cat...`) 而 TELNET 還能用來測試伺服器端口(如 Web 服務是否活著),直接用 telnet 指令,輸入 IP+port,觀察回應即可。例如: ``` telnet www.example.com 80 ``` ## SSH(Secure Shell) SSH 基本上就是 TELNET 的替代版本,因為 SSH 安全,有個 Secure。 SSH(Secure Shell,安全殼層協定)是一種可以安全遠端連線與操作伺服器的網路協定,在類 Unix 系統中應用最廣泛,也支援在 Windows、macOS 及多種設備。 SSH 為所有資料傳輸提供加密、身分驗證和完整性保護,廣泛應用於遠端維運、檔案傳輸、隧道加密等。 SSH 預設用 TCP port 22。 ### SSH 運作原理 1. 非對稱式加密:Asymmetric Encryption(公鑰 / 私鑰) 當連線伺服器時,伺服器先送出「公鑰」。 用戶端用公鑰加密敏感資料(如登入密碼或用來協議的對稱金鑰),只有伺服器能用「私鑰」解開這些資料。 主要目的是驗證伺服器身分、協商會話(Session)金鑰。 2. 對稱加密(Session Key) 連線後,雙方用協議產生的「會話(Session)金鑰」, 所有後續資料通訊都用對稱加密(如 AES、ChaCha20)。 3. 資料完整性與驗證 利用雜湊演算法(如 SHA-2、HMAC)確保資料沒被竄改,也會反覆校驗封包。 ### SSH 使用 一般來說格式都長這樣: ```bash ssh [username]@[ip address] ``` 第一次連線時需要輸入密碼。 若使用公鑰認證登入的話(無密碼),則是以下流程: 會先在本機端生成金鑰: ```bash ssh-keygen ``` 會得到 `~/.ssh/id_rsa`(私鑰)與 `~/.ssh/id_rsa.pub`(公鑰)。 然後將這組金鑰傳給 server: ```bash ssh-copy-id tom@192.168.1.10 ``` 之後使用私鑰就可安全登入,不用每次都要輸密碼。 ### SFTP SFTP(SSH File Transfer Protocol),稱為 SSH 檔案傳輸協定,是一種基於 SSH 協定的安全檔案傳輸方式。實際上就是 FTP 的安全版啦。 有什麼差異呢?除了安全以外。 SFTP 的 Port 全都使用 22,而連線通道從原本的 FTP 的雙通道,降到 1 通道,就這樣。 而 SFTP 的連線語法跟 SSH 是一樣的: ```bash sftp user@server.example.com ``` 若用的不是標準的 Port,可額外寫: ```bash sftp -P 2222 user@server.example.com ``` 而一旦進入到互動式介面時,操作就跟原本的 FTP 是一樣的了。 ## 總結 ### FTP(File Transfer Protocol) FTP 是早期用於兩台電腦間傳送檔案的協定,採主從式架構,使用明文傳輸,因此不安全。 採雙通道設計: * 控制通道:port 21,用於指令與回應。 * 資料通道:port 20 或動態埠,用於傳輸檔案。 基本流程包含:建立連線 → 登入 → 瀏覽目錄 → put/get 上傳下載 → quit 離開。 可用圖形化工具(FileZilla、WinSCP)或 cmd 操作。 由於明文不安全,現代多以 SFTP 取代。 ### TELNET TELNET 是早期的遠端文字介面登入技術,使用 TCP port 23。 採主從式架構,所有資料(包含帳密)皆為 明文,容易遭竊聽,因此已被淘汰。 用法為:`telnet [IP] [port]`。 除遠端登入外,也常用來測試伺服器埠是否開啟。 已全面被 SSH 取代。 ### SSH(Secure Shell) SSH 是安全版的 TELNET,使用 TCP port 22。 提供加密、身份驗證與資料完整性保護,是現代標準的遠端連線方式。 運作方式: * 非對稱加密(公私鑰)用於身分驗證與協商金鑰。 * 對稱加密(Session Key)負責後續傳輸。 * 雜湊驗證確保資料未被竄改。 登入方式:`ssh user@ip`。 也可使用 key pair(`ssh-keygen` + `ssh-copy-id`)達成免密碼安全登入。 ### SFTP(SSH File Transfer Protocol) SFTP 是 FTP 的安全版本,基於 SSH 建立,使用 單一 port 22。 語法與 SSH 類似:`sftp user@server`。 進入後的 `put/get/ls` 指令與 FTP 類似。 ## 參考資料 [遠端連線與傳輸講義 - HackMD](https://hackmd.io/@ncnu-opensource/book/https%3A%2F%2Fhackmd.io%2F%40ncnu-opensource%2FrkLUNTfiel#%E9%81%A0%E7%AB%AF%E9%80%A3%E7%B7%9A%E8%88%87%E5%82%B3%E8%BC%B8) [Telnet,Mstsc,SSH,FTP之间的比较和区别 - 上善若泪 - 博客园](https://www.cnblogs.com/jingzh/p/16018410.html) [SSH介紹及應用 | 凌群電子報](https://www.syscom.com.tw/ePaper_Content_EPArticledetail.aspx?id=84&EPID...) [鳥哥私房菜 - 第十三章、遠端連線伺服器 Telnet / SSH / VNC / XDMCP / RSH](https://linux.vbird.org/linux_server/centos4/0310telnetssh-centos4.php) [Day9: 遠端連線 | iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天](https://ithelp.ithome.com.tw/m/articles/10321343)