如何[正确,安全地]在Linux中更改默认的SSH端口
SSH默认使用端口22.
通过SSH连接到服务器时,大多数情况下,我们不提供任何端口信息。
在这种情况下,连接将连接到SSH服务器的端口22.
我们可以使用以下步骤将默认端口从我们选择的端口号22更改为:
- 打开
/etc/ssh/sshd_config
文件进行编辑。 - 找到具有“端口22”的行(如果用#注释掉了,也请删除#)。
- 将线路更改为端口2522(或者我们选择的介于1024和65535之间的任意数字)。
- 确保防火墙允许新端口(如果有)。
- 使用sudo systemctl restart sshd重新启动ssh守护进程。
- 从现在开始,我们必须指定端口以建立ssh连接
ssh Hyman @ theitroad_address_of_server -p 2522
。
让我向我们详细说明步骤,并告诉我们为什么我们可以考虑更改
为什么要更改默认的SSH端口?
保护SSH服务器最基本的技巧之一就是更改默认的SSH端口号22.
为什么?
由于许多Bot脚本在默认端口22上尝试进行暴力攻击,因此大多数此类脚本并不总是扫描开放端口,它们将默认端口用于SSH等各种已知服务。
更改默认的SSH端口可减少此类攻击的次数。
还有其他方法可以提高SSH服务器的安全性。
如果有兴趣,请按照以下可行的技巧来提高SSH服务器的安全性。
现在我们知道了为什么要更改默认的SSH端口,让我们看看如何做。
通过更改防火墙设置允许新端口上的流量
If you have a firewall set or custom ipconfig or ifconfig or if you are using selinux, you must allow the new ssh port before making the changes. Otherwise you Jan lock yourself out without an SSH access.
现在,这部分取决于我们使用的是哪种防火墙或者路由。
如果使用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配置。
向下滚动一点,我们会看到带有“端口22”的行。
如果以#
开头,则表示该行已被注释掉。
带注释的行为我们提供默认设置。
因此,如果我们看到“端口22”,则表示默认端口为22.
用我们选择的端口号更改此行。
在Linux中,端口号0-1023通常保留用于各种服务。
最好避免使用0到1023之间的任何值,以免发生冲突。
我们可以使用1024到65535之间的任何其他端口号。
在示例中,我使用的是2522.
确保在端口行之前删除“#”。
保存更改并退出编辑器。
如果我们使用的是Nano,请使用Ctrl + X保存并退出。
下一步是重新启动ssh服务。
大多数现代系统使用systemd服务,因此我们可以使用以下命令:
sudo systemctl restart sshd
现在,如果要访问SSH服务器,则必须指定端口号:
ssh Hyman@theitroad_address_of_server -p 2522