感謝大家一直以來對我博客中與SSH相關文章的支持。根據統計,許多人對SSH感興趣,但卻缺少一份從"基礎開始如何安全配置"的綜合指南。
SSH (Secure Shell) 不僅僅是遠程連接工具。對開發者來說,它是伺服器管理的生命線,而對普通用戶來說,它是一把讓你能隨時隨地訪問自己電腦的強大武器。
今天,我將超越SSH的基本概念,整理出 從實務者的角度必須遵循的安全設置和技巧,幫助大家"正確"開始使用SSH。
1. SSH是什麼,為什麼是必需的?
SSH是 Secure Shell 的縮寫,是一種可以讓用戶登入網路上其他計算機、執行命令及傳輸文件的協議。其核心在於 ‘加密’。與傳統的Telnet不同,所有通信內容在傳輸過程中都是加密的,即使有人在中間截獲數據,也無法得知內容。
-
開發者: 在AWS、Azure等雲伺服器的部署及管理中,SSH是必不可少的。
-
非開發者: 可以安全地控制家中的PC、NAS、樹莓派等設備。
2. 伺服器(遠程)設定:安全的第一步
安裝 openssh-server 在伺服器(遠程位置)僅僅是個開始。安裝後立即使用默認設置極為脆弱,安全性不足。
設置文件的位置在Linux環境下是 /etc/ssh/sshd_config。需要修改該文件來設置基本的安全措施。
修改設置文件:
sudo nano /etc/ssh/sshd_config
實戰設置 1:更改默認端口(Port Change)
SSH在全球使用 22端口。黑客們的自動化機器人通常會集中攻擊22端口。僅更改端口號就能避免超過90%的暴力攻擊(Brute Force)。
# Port 22 <-- 注釋掉或刪除該行
Port 22022 # 建議使用1024以上的隨機端口號
實戰設置 2:禁止密碼驗證(Password Authentication No)
密碼終究會被破解。應該使用安全性遠高的 SSH Key(密鑰) 方式,並在完成密鑰設置後完全禁止密碼登錄。
PasswordAuthentication no
⚠️ 注意: 此設置必須在 確認SSH密鑰登錄正常後 才能應用。否則,可能會完全阻止對伺服器的訪問。
3. 本地(Client)設定:密鑰(Key)生成和註冊技巧
現在是時候為本機(本地)生成連接伺服器的密鑰了。從這裡開始,需要經驗豐富用戶的技巧。
技巧 1:生成可識別的密鑰(-C選項)
生成密鑰時,不要僅僅輸入 ssh-keygen。隨著密鑰的增多,將很難分辨每個密鑰的用途。一定要使用注釋(Comment)選項來區分。
# -t ed25519: 最新的加密方式(速度和安全性優良)
# -C: 為密鑰文件末尾添加注釋以幫助識別。
ssh-keygen -t ed25519 -C "my-macbook-pro-home-server-key"
生成的密鑰將保存在 ~/.ssh/ 目錄中。(id_ed25519:私鑰,id_ed25519.pub:公鑰)
技巧 2:最簡單的密鑰複製方法(ssh-copy-id)
需要將生成的公鑰(pub)註冊到伺服器。無需複製和粘貼文本,可以用一行命令完成。
# 語法:ssh-copy-id -i [公鑰路徑] [帳號]@[伺服器地址] -p [端口]
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.100 -p 22022
# 如果用DNS域名連接伺服器,也可以直接輸入DNS,而非IP地址。因為您的路由器會將DNS服務器的查詢轉換為IP。
ssh-copy-id -i ~/.ssh/id_ed25519.pub alice@wonderland.com -p 22022
這條命令將自動將我的公鑰添加到伺服器的 ~/.ssh/authorized_keys 文件中。
技巧 3:手動註冊時需注意的事項(權限問題)
如果在無法使用 ssh-copy-id 的情況下需要手動註冊,請注意文件權限(Permission)。因為SSH會拒絕權限過於寬鬆的連接。
連接伺服器後請在主目錄中檢查以下幾項:
-
.ssh文件夾: 權限700(僅我可讀/寫/執行) -
authorized_keys文件: 權限600(僅我可讀/寫)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
如果想了解更多關於Linux文件系統的權限,請點擊這裡了解更多詳情!
4. 連接測試及下一步
準備工作完成後,請嘗試連接。因為已經更改了端口,必須使用 -p 參數。
ssh -p 22022 user@192.168.1.100
# 無論是LAN IP,WAN IP還是DNS域名,都無所謂,只要指向伺服器即可。
如果無需密碼即可直接連接,則成功。現在請在伺服器的 sshd_config 中設置 PasswordAuthentication no 以完成安全設置。

現在您已經擁有安全控制伺服器的環境。但SSH的世界是廣闊的。請在下文中繼續學習如何自動化連接、管理文件以及結合更強大的安全工具。
📖 推薦閱讀的進階指南
在下一篇文章中,我將講解許多人感到困惑的 SSH Config 文件,如何在沒有複雜的選項下用一個單詞連接伺服器,這在第二篇文章中有詳細介紹。如果您還覺得有幫助,請參考其他文章!
目前沒有評論。