如何正确安全地更改 Linux 中的默认 SSH 端口
如果您了解 SSH 基础知识,您已经知道 SSH 默认使用端口 22。
当您通过 SSH 连接到服务器时,大多数情况下您无需提供任何端口信息。在这种情况下,您的连接将转到 SSH 服务器的端口 22。
您可以使用以下步骤将默认端口从 22 更改为您选择的端口号:
- 打开
/etc/ssh/sshd_config
文件进行编辑。 - 找到有该行的行
Port 22
(如果它被#注释掉,也删除#)。 - 将该行更改为端口 2522(或 1024 至 65535 之间的任意数字)。
- 确保防火墙允许新端口(如果有)。
- 使用 重新启动 ssh 守护进程
sudo systemctl restart sshd
。 - 从现在开始,您必须指定端口来建立 ssh 连接
ssh user@ip_address_of_server -p 2522
。
让我向你详细展示步骤,并告诉你为什么你可能考虑改变
为什么要更改默认 SSH 端口?
保护 SSH 服务器安全的最基本技巧之一是更改默认 SSH 端口号 22。
为什么?因为许多机器人脚本尝试对默认端口 22 进行暴力攻击。大多数这些脚本并不总是扫描开放端口,它们的目标是各种已知服务(如 SSH)的默认端口。
更改默认 SSH 端口可减少此类攻击的数量。还有其他方法可以提高 SSH 服务器的安全性。如果有兴趣,请遵循这些可操作的提示来提高 SSH 服务器的安全性。
现在您知道为什么要更改默认 SSH 端口,让我们看看如何操作。
通过更改防火墙设置允许新端口上的流量
现在,这部分取决于您使用的防火墙或路由类型。
如果您使用UFW,则可以使用以下命令允许端口 2522:
sudo ufw allow 2522/tcp
如果您使用iptables,则应使用此命令:
sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2522 -j ACCEPT
在 Fedora、CentOS、Red Hat上,防火墙由firewalld管理,您可以使用此命令:
sudo firewall-cmd --permanent --zone=public --add-port=2522/tcp
sudo firewall-cmd --reload
在 CentOS 和 Red Hat 上,您可能还需要更改 SELinux 规则:
sudo semanage port -a -t ssh_port_t -p tcp 2522
现在您已经设置了正确的防火墙设置,让我们继续更改 SSH 端口。
更改默认 SSH 端口
通常,ssh 配置文件位于/etc/ssh/sshd_config
。您必须使用基于终端的编辑器(如 Vim、Nano 或Emacs)来编辑该文件。
像 Ubuntu 这样的发行版默认安装了 Nano,因此您可以使用它以编辑模式打开文件,如下所示:
sudo nano /etc/ssh/sshd_config
如您所见,您必须是 sudo 用户或 root 才能编辑 ssh 配置。
向下滚动一点,您将看到一行Port 22
。如果它以 开头#
,则表示该行已被注释掉。注释掉的行为您提供默认设置。
因此如果您看到# Port 22
,则表示默认端口是 22。
将此行更改为您选择的端口号。在 Linux 中,端口号 0-1023 通常保留用于各种服务。最好避免使用 0 到 1023 之间的任何值,以避免冲突。
您可以使用 1024 至 65535 之间的任何其他端口号。我在示例中使用的是 2522。请确保删除#
Port 行之前的 。
保存更改并退出编辑器。如果您使用的是 Nano,请使用 Ctrl+X 保存并退出。
下一步是重新启动 ssh 服务。大多数现代系统使用 systemd 服务,因此您可以使用以下命令:
sudo systemctl restart sshd
现在,如果您想访问 SSH 服务器,您必须指定端口号:
ssh user@ip_address_of_server -p 2522
它有帮助吗?
我希望本教程能帮助您更改 SSH 端口。既然您已经更改了端口,那么每次想要通过 SSH 连接服务器时就必须使用该端口,这可能会很烦人。
这就是为什么我建议使用 SSH 配置文件来保存设置以便于快速访问。