以前筆記的 更換 SSH port on Ubuntu 20,現在已經不適用了!
當我使用 sudo service sshd restart
後,
發現系統提示為
Job for ssh.service failed because the control process exited with error code.
See "systemctl status ssh.service" and "journalctl -xeu ssh.service" for details.
我檢查了一下, 修改為 sudo service ssh restart
雖然是可以重新啟動 ssh
但我測試 新端口登入,連線會被中斷,代表修改無效。
只好,去爬文了,在 4sysops 看到有效的修改辦法。
先列出 Ubuntu 上所有正在使用的連接埠並檢查連接埠是否已被佔用
sudo ss -tuln
⏰ 提醒
更改 SSH端口前,一定記得先去防火牆開啟新端口號!
sudo iptables -A INPUT -p tcp --dport 12345 -j ACCEPT
sudo netfilter-persistent save
sudo netfilter-persistent reload
打開:
sudo vi /etc/systemd/system/sshd.socket
找到 ListenStream=
修改數字。
22
Change 12345
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
or sudo systemctl restart ssh
sudo systemctl status ssh
然後現在應該聲明它已開始偵聽新連接埠:
webserver.abc.com sshd[58725]: Server listening on 0.0.0.0 port 12345.
webserver.abc.com sshd[58725]: Server listening on :: port 12345
若發現 disabled
ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; disabled; preset: enabled)
Drop-In: /etc/systemd/system/ssh.service.d
請啟動:sudo systemctl enable --now ssh.service
sudo ss -tuln
確定 SSH 使用端口為新,就再開個會話,用新端口登入測試,確定可以正常登入,就可以把 原端口 22 關閉。
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
sudo netfilter-persistent save
sudo netfilter-persistent reload
⏰ 提醒
若有使用 fail2ban 請記得重新加載 fail2ban 服務。sudo systemctl restart fail2ban
orsudo fail2ban-client restart
---
找到 Port
,預設情況下這個選項是被注釋,像下面這樣:
#Port 22
去掉前面的#
把後面的 22
換成其它端口,比如 12345
,像下面這樣:
Port 12345
修改完成,再重新載入 sshd on ubuntu 20.04 or 22.04
sudo service sshd restart