哈囉,大家好!你是否曾經想過如何在你的系統上實現安全的遠程連線?沒問題,今天我們將帶你進入SSH(Secure Shell)的神秘世界,這是一種保護你的數據免受窺視的方式。不要擔心,我們將從頭開始,逐步介紹如何使用SSH建立安全加密連線,並分享一些設定檔的配置範例,讓你事半功倍。




哈囉,大家好!你是否曾經想過如何在你的系統上實現安全的遠程連線?沒問題,今天我們將帶你進入 SSH(Secure Shell)的神秘世界,這是一種保護你的數據免受窺視的方式。不要擔心,我們將從頭開始,逐步介紹如何使用SSH建立安全加密連線,並分享一些設定檔的配置範例,讓你事半功倍。

SSH (Secure Shell)是什麼?

在探索SSH之前,讓我們簡要介紹一下它。SSH,即Secure Shell,是一種加密的遠程連線協議,可確保你的數據在互聯網上傳輸時得到保護。你可以把它想像成一個安全的隧道,讓你能夠遠程訪問其他計算機,而不必擔心敏感信息被竊取。

SSH 的工作原理

SSH通過使用密鑰對來確保通信的安全性。這些密鑰分為兩種:公鑰和私鑰。公鑰用於加密數據,而私鑰用於解密它。這種加密方法確保了即使在不安全的網絡上,數據也不會被輕易破解。

使用SSH建立連線

步驟1:檢查SSH是否安裝

在開始之前,請確認你的系統上是否安裝了SSH。在大多數Linux發行版中,SSH通常是預先安裝的。如果不確定,可以打開終端並輸入以下命令來檢查:

ssh -v

有出現訊息的話就表示有安裝,例如我的就返回以下訊息

usage: ssh [-46AaCfGewgKkMNfewnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]

步驟2:連線到遠程主機

現在,讓我們實際連接到一個遠程主機。只需在終端中使用以下命令,

#將 <username> 替換為你的用戶名,而 <hostname> 替換為遠程主機的地址:
ssh <username>@<hostname>

系統可能會要求你輸入密碼。一旦你輸入正確的密碼,你就會進入遠程主機的終端。

#舉例來說,如果要以 user 這個帳號登入 192.168.1.188 這台主機,就執行:
ssh user@192.168.188

建立連線時,要輸入該帳號的密碼,通過認證之後,就可以登入該主機,遠端進行操作。

若不想輸入密碼,詳細教學請參考SSH Key是什麼?4步驟實現 SSH 連線免密碼!

SSH 進階用法

-p 參數:指定埠號

有時候為了安全性,SSH服務可能運行在非預設的埠號上。使用 -p 參數可以指定要連接的遠程主機的埠號。例如,如果SSH服務運行在2222埠號,你可以這樣連接:

ssh -p 2222 <username>@<hostname>

-i 參數:指定金鑰文件

如果你需要使用不同的金鑰文件,可以使用 -i 參數指定。例如:

ssh -i /path/to/private_key.pem <username>@<hostname>

遠端執行指令

若您只需要連線到遠端的 Linux 伺服器並執行單一指令,可以直接將遠端指令附加在 ssh 參數的最後面。這樣在 SSH 連線建立之後,指令會自動執行並在完成後自動關閉連線,能夠讓指令更加簡潔。

ssh <username>@<hostname> cat /var/log/syslog

當你運行這個指令後,SSH將會連接到遠端伺服器,執行 cat /var/log/syslog 指令,並將輸出結果顯示在你的本地終端。完成後,SSH連線會自動關閉。

遠端 X Window 顯示

如果你想在遠端的 Linux 伺服器上執行圖形介面的程式,並且想要將畫面顯示在本地端的螢幕上,你可以使用 ssh 的 X11 forwarding 功能。

ssh -X user@192.168.188 xterm

當我們使用SSH的-X參數建立支援X11 forwarding的連線時,遠端的Linux伺服器會被視為「不安全、不被信任」的主機。為了保護本地端的系統安全,在這種情況下某些較不安全的操作會被禁止執行。如果我們使用的軟體需要執行這些危險操作,就會產生錯誤。若想要將遠端系統視為「安全且被信任」的主機,可以改用-Y參數,效果類似於-X,但不會有任何安全性限制。

建立本地轉發 SSH 隧道

假設你想要安全地訪問遠端主機上運行的網頁服務,該服務在遠端主機的 80 埠號運行。你可以使用以下指令建立本地轉發 SSH 隧道:

ssh -NL 8888:localhost:80 user@remote_host_ip

現在你可以在本地瀏覽器中輸入 http://localhost:8888,就像訪問本地服務一樣,但實際上你正通過 SSH 隧道訪問遠端的網頁服務。

建立遠端轉發 SSH 隧道

假設你是一家跨國公司的資料庫管理員,你負責維護公司的資料庫。你的資料庫伺服器位於公司總部的本地網絡中,並且只允許在內部網絡中訪問。然而,你需要遠程協助來自分佈在不同國家的團隊進行資料庫維護工作。

在這種情況下,你可以使用遠端轉發 SSH 隧道來解決問題:

  1. 建立遠端轉發 SSH 隧道
    • 在你的本地主機上運行以下指令,建立遠端轉發 SSH 隧道,將本地資料庫埠號(比如 3306)暴露到遠端主機上:ssh -R 3306:localhost:3306 your_username@remote_server_ip
  2. 遠程團隊訪問資料庫
    • 當遠程團隊需要訪問資料庫時,他們只需使用遠端主機上的資料庫客戶端,通過連接到遠程主機的 localhost 的相應埠號(即 3306),實際上他們就是在通過 SSH 隧道訪問本地的資料庫服務。mysql -h localhost -P 3306 -u db_user -p

通過這種方式,你的遠程團隊可以透過 SSH 隧道安全地訪問本地資料庫服務,而不必直接將資料庫服務暴露在互聯網上。這種方法同時確保了數據的安全性和隱私性,因為所有的通信都是加密的。這對於跨國團隊的協作和資料庫管理非常有用。

背景執行

當使用ssh執行某些會持續很久的指令時,shell就會被擋住,等待ssh指令執行完畢,因此無法繼續執行其他指令。儘管可以另外開啟一個新的終端機來使用,但這樣可能會讓整個桌面都充斥著停住的終端機。

為了避免這種情況,我們可以在執行指令時加上 -f 參數,讓指令放在背景執行。這樣的做法會造成需要開啟很多終端機的問題,以下是一些常見的使用情境。

  • 讓 ssh 在背景執行,啟動 xterm ssh -fX your_username@remote_server_ip xterm
  • 讓 ssh 在背景執行,建立安全加密通道 ssh -NR 3306:localhost:3306 your_username@remote_server_ip

除錯模式

  • 第一級除錯模式 (-v): 這是最基本的除錯模式。當你使用 -v 參數時,SSH 會輸出一些基本的連線信息,如認證過程、金鑰驗證和一些連線細節。這可以幫助你確認是否成功建立了連線,以及連線的過程中是否有任何錯誤。
  • 第二級除錯模式 (-vv): 在這個級別下,SSH 會輸出更詳細的連線信息,包括更多的金鑰驗證細節、加密相關的資訊和其他一些通信層面的細節。這個級別通常用於深入了解連線的過程,特別是在有問題或錯誤時。
  • 第三級除錯模式 (-vvv): 這是最詳細的除錯模式。在這個級別下,SSH 會提供非常詳盡的連線細節,包括加密、金鑰交握、認證、通信協議和各種交換。這個級別通常用於在進行深入故障排除時,或者當你需要仔細了解 SSH 連線運作細節時。

這些不同級別的除錯模式允許你根據需要獲取不同程度的連線資訊。在一般情況下,如果你只是想確認連線是否成功,使用第一級除錯模式就足夠了。如果你遇到了連線問題或錯誤,你可以考慮切換到更高級別的除錯模式來幫助你進行故障排除。

配置SSH設定檔

  • 找到SSH設定檔 SSH的設定檔通常位於 ~/.ssh/config。如果你找不到它,不用擔心,你可以創建一個新的。
  • 設定主機別名 你可以在設定檔中為不同的遠程主機設定別名,以方便記憶。
Host alias-name                      # 用來連線的 alias 名稱
HostName server.name                 # host domain 或 ip
Port port-number                     # host 的 SSH port
IdentityFile ~/.ssh/private_ssh_file # 指定 pem 或 pub 的 key 路徑
User username                        # (選填)登入 SSH 的 username
ForwardX11 yes                       # (選填) 啟用回傳 GUI 

你只需使用 ssh alias-name 就可以連接到指定的遠程主機。

常見問題解答

  1. 我可以在Windows上使用SSH嗎? 是的,你可以使用 MobaXterm 教學比 Putty 更強大方便好操作的 Windows 免費 SSH Client 軟體,可讓你在Windows系統上實現安全連線。
  2. SSH金鑰是否比密碼更安全?是的,SSH金鑰比傳統密碼更安全。金鑰是隨機生成的,並且不易被猜測。此外,金鑰還能夠保護你免受暴力破解攻擊。
  3. 我該如何撤銷失效的SSH金鑰?如果你的金鑰被擷取或懷疑被泄漏,你應該立即在相應的帳戶中撤銷該金鑰,然後生成一對新的金鑰。
  4. SSH埠號轉發有什麼作用?SSH埠號轉發允許你將本地埠號的流量轉發到遠程主機,從而實現安全的本地和遠程主機之間的通信。
  5. SSH金鑰的有效期是多久? SSH金鑰沒有固定的有效期限制。你可以繼續使用它,直到你決定撤銷或更換金鑰為止。但定期更新金鑰是一種好習慣,以提高安全性。

無論你是Linux新手還是經驗豐富的用戶,這篇文章希望能幫助你更好地理解並使用SSH建立安全加密連線。通過遵循這些步驟,你可以在互聯網上實現安全的遠程訪問,讓你的數據免受威脅。現在,快去實踐一下吧!

延伸閱讀:如何禁止 root SSH 用密碼登入 ? 1個關鍵步驟強化 Linux 系統安全性

延伸閱讀:如何在 Linux 遠端同步與備份 ? 使用 rsync 的教學與 crontab 定期備份與排程範例





主頁 » LINUX » 實用技巧 » 如何使用 Linux SSH 安全加密連線,指令教學及設定檔配置範例

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *