提供WordPress、SEO技術與各項 IT 資訊
Secure Shell (SSH) 是一種加密的網路傳輸協定,可在不安全的網路中為網路服務提供安全的傳輸環境。SSH 通過在網路中建立安全隧道來實現 SSH 客戶端與伺服器之間的連接。SSH 最常見的用途是遠端登入系統,人們通常利用 SSH 來傳輸命令列介面和遠端執行命令。
但是 SSH 使用標準傳輸控制協議 (TCP) 22 port 可能存在高度風險,因為它容易受到許多網路威脅,尤其是暴力破壞。這是一種用於訪問加密敏感資訊的駭客攻擊方法,畢竟很多人在安裝完伺服器後便很開心地在使用,忘記自己的默認 SSH 22 port已經曝露在駭客機器人的暴力破壞中。
因此,更改默認 22 port 是保護 SSH 的最佳方法之一。在這文章中,我們將解釋如何選擇新的 SSH port,並引導您在您的伺服器上更改它。
一般我們知道任的 SSH port是具備高風險的時候,此時我們需要更改 SSH port 來提高安全性,但是在選擇新的 SSH port 時,需要注意伺服器的 0-1023 port 是為各種服務保留的,而且這些 port 的變更都是透過 SSH 來更改,為避免發生錯誤導致服務無法使用或是發生改完後無法使用 SSH 登入變成需要重新再安裝系統,我們先了解伺服器默認有哪些服務與 port。
以下是最常見的各種服務及其對應的 port 和功能的列表:
Port 位 | 協議 | 服務 |
20 | TCP | 檔案傳輸協議 (FTP) 資料 |
21 | TCP | FTP 伺服器 |
22 | TCP | SSH |
23 | TCP | Telnet 遠程登錄伺服器 |
25 | TCP | 簡單郵件傳輸協議 (SMTP) |
53 | TCP/UDP | 域名系統 (DNS) |
67/68 | UDP | 動態主機配置協議 (DHCP) |
69 | UDP | 普通 FTP (TFTP) |
80 | TCP | 超文本傳輸協議 - 用於傳輸網頁 (HTTP) |
110 | TCP | 郵局協議 3 (POP3) - 用於接收電子郵件 |
123 | UDP | 網路時間協議 (NTP) |
137/138/139 | TCP/UDP | 網路 BIOS |
143 | TCP | 網際網路資訊存取協定(IMAP) - 用於檢索電子郵件 |
161/162 | TCP/UDP | 簡單網路管理協定(SNMP) |
179 | TCP | 邊界閘道器協定 (BGP) |
389 | TCP/UDP | 輕型目錄存取協定 (LDAP) |
443 | TCP | 超文字SSL/TLS傳輸安全協定或QUIC (HTTPS) |
636 | TCP/UDP | LDAP over TLS 加密傳輸 (LDAPS) |
989/990 | TCP | 基於 SSL/TLS 的 FTP (FTPS) |
先了解以上是伺服器上最常使用的服務與 port 後,我們就要避開使用這些 port 位以避免發生衝突導致服務無法使用,當然選擇的 port 位要越難以想像越好,因此,我們建議從1024 ~ 65535的不同 port 中進行選擇,因為它們是不被定義的通訊協定。
在這文章中,我們將提供四個簡單的步驟說明如何更改默認 SSH port。
如果您是使用 MAC 或是 Linux桌面平台請在 終端機 (Terminal) 執行以下指令:
ssh root@xxx.xxx.xxx.xxx
#***說明:xxx.xxx.xxx.xxx 這是指您的ip,例如您的ip為123.123.123.123,那麼您便需要輸入 ssh root@123.123.123.123
如果您是使用 Win 10 / Win 11,請下載 PuTTY 並安裝好它,然後開啟,您便會得到以下畫面。
Host Name(or IP address) 下方的欄位請輸入您要連線的 ip ,例如 123.123.123.123,您就只要輸入 123.123.123.123,下面點選 SSH ,在點擊 Open,就會連線到伺服器上。
不論您是使用 MAC、Linux桌面版或是使用 Windows ,一但連線到伺服器後都會需要輸入登入帳號與密碼,此時您只要輸入您所設定的帳號密碼。您是租用雲端主機、專屬實體主機的話請輸入主機商提供的帳號與密碼,您便可以連線到您的主機上。
首先執行以下命令來編輯 SSH 守護程式 (sshd):
sudo vi /etc/ssh/sshd_config
輸入指令後 Enter 完 SSH 配置文件就會打開。找到讀取 #Port 22 這一行。接下來,刪除 # 並將 22 替換為您要使用的新 SSH port 號(如下方圖示)。
將 SSH port 更改為 1688:
最後,按Esc退出插入模式並輸入: ws! 保存更改並退出。
首先確保新選擇的 port 沒有被擋。如果這是一個新的 雲端主機或是專屬實體主機,所有 port 默認應該都是打開。
更新您的防火牆設定許可 SSH 傳入連接到的新 port 位。執行以下命令:
sudo firewall-cmd --add-port=1688/tcp --permanent successsudo firewall-cmd --remove-service=ssh --permanent success
接下來,使用以下命令重新啟動 SSH 服務:
service ssh restart
systemctl restart sshd.service
要驗證新的 SSH port 是否打開,請執行 ss 或 netstat 指令:
ss -tulpn | grep 1688
然後會看到 tcp LISTEN 0 128 *:1688 *:* users:((“sshd”, ……(如下)
[root@host ~]# ss -tulpn | grep 1688
udp UNCONN 0 0 *:622 *:* users:(("rpcbind",pid=477,fd=7))
udp UNCONN 0 0 [::]:622 [::]:* users:(("rpcbind",pid=477,fd=10))
tcp LISTEN 0 20 127.0.0.1:54322 *:* users:(("avgtcpd",pid=2416,fd=53))
tcp LISTEN 0 128 *:1688 *:* users:(("sshd",pid=2946,fd=3))
tcp LISTEN 0 45 *:2077 *:* users:(("cpdavd - accept",pid=2022,fd=3))
tcp LISTEN 0 45 *:2078 *:* users:(("cpdavd - accept",pid=2022,fd=4))
tcp LISTEN 0 45 *:2079 *:* users:(("cpdavd - accept",pid=2022,fd=7))
tcp LISTEN 0 45 *:2080 *:* users:(("cpdavd - accept",pid=2022,fd=6))
tcp LISTEN 0 45 *:2091 *:* users:(("cpdavd - accept",pid=2022,fd=5))
tcp LISTEN 0 128 *:110 *:* users:(("pop3-login",pid=1686,fd=7),("pop3-login",pid=1682,fd=7),("dovecot",pid=1600,fd=22))
或是執行 netstat -tulpn | grep 1688
然後會看到 tcp 0 0 0.0.0.0:1688 0.0.0.0:* LISTEN 2946/sshd (如下)
[root@host ~]# netstat -tulpn | grep 1688
tcp 0 0 127.0.0.1:54322 0.0.0.0:* LISTEN 2416/avgtcpd
tcp 0 0 0.0.0.0:1688 0.0.0.0:* LISTEN 2946/sshd
tcp 0 0 0.0.0.0:2077 0.0.0.0:* LISTEN 2022/cpdavd - accep
tcp 0 0 0.0.0.0:2078 0.0.0.0:* LISTEN 2022/cpdavd - accep
tcp 0 0 0.0.0.0:2079 0.0.0.0:* LISTEN 2022/cpdavd - accep
tcp 0 0 0.0.0.0:2080 0.0.0.0:* LISTEN 2022/cpdavd - accep
tcp 0 0 0.0.0.0:2091 0.0.0.0:* LISTEN 2022/cpdavd - accep
udp 0 0 0.0.0.0:622 0.0.0.0:* 477/rpcbind
udp6 0 0 :::622 :::* 477/rpcbind
現在您可以嘗試使用以下命令登錄 SSH:
ssh -p 1688 root@123.123.123.123
使用默認的 SSH port 會讓您成為駭客的輕鬆目標,他們經常尋找開放的 port 位來攔截和竊取資料。因此,我們建議更改 SSH port 以避免潛在的網路攻擊並為您的 Linux 伺服器增加額外的安全保護。
在為您的 SSH 選擇新的 port 之前,請注意編號為 0-1023 的 port 是為既有的通訊協定服務保留的。因此,最好使用從 1024 到 65535 port。
配置新的指定 port 很容易,您只需要更新 SSH 守護程式配置文件中的 port 號和防火牆設定即可。然後,重新啟動 SSH 服務並再次測試新 port 的連接。
我們希望這篇文章能幫助您更改 VPS 上的 SSH port。如果您有任何問題或想法,請將它們留在下面的評論部分。