它不仅提供了加密的远程登录会话,还允许安全地传输文件和数据
然而,默认情况下,SSH服务通常监听在TCP端口22上,这是众所周知的,也因此成为了许多恶意攻击者的首选目标
为了提高系统的安全性,重新配置SSH服务以监听非标准端口是一项重要的安全措施
本文将详细介绍如何在Linux系统上高效、安全地配置SSH端口,确保你的远程连接既便捷又安全
一、了解SSH端口配置的重要性 SSH端口配置的首要目的是提高系统的安全性
通过更改默认的SSH端口,你可以大大降低被自动化脚本和恶意软件扫描及攻击的风险
此外,不同的应用场景也可能需要不同的SSH端口配置,例如,在受限的网络环境中,某些端口可能被防火墙规则允许或阻止,这时配置一个合适的SSH端口就变得尤为重要
二、准备工作 在开始配置之前,请确保你拥有对目标Linux系统的root权限或通过sudo权限能够执行必要的命令
同时,考虑到更改SSH端口可能会导致你暂时失去远程访问权限,建议在进行操作前,通过物理访问或已有的远程会话来确保可以随时恢复访问
三、修改SSH配置文件 SSH的配置文件通常位于`/etc/ssh/sshd_config`
要更改SSH端口,你需要编辑这个文件
1.打开配置文件 使用你喜欢的文本编辑器,如`nano`、`vim`或`gedit`(在图形界面下)
例如,使用`nano`: bash sudo nano /etc/ssh/sshd_config 2.查找并修改Port参数 在文件中找到`#Port 22`这一行(有时可能已经是`Port 22`,没有注释符号`#`)
将`22`改为你想要的新端口号(例如`2222`),并确保去掉行首的注释符号`#`: plaintext Port 2222 如果需要同时监听多个端口,可以在下面添加更多的`Port`行,例如: plaintext Port 2222 Port 2223 但出于安全考虑,通常建议只更改到一个非标准端口
3.保存并退出 根据使用的编辑器,保存更改并退出
在`nano`中,你可以按`Ctrl+O`保存,然后按`Ctrl+X`退出
四、重启SSH服务 修改配置文件后,需要重启SSH服务以使更改生效
在大多数Linux发行版中,可以使用以下命令之一来重启SSH服务: - 对于基于systemd的系统(如Ubuntu 16.04及以后、CentOS 7及以后等): bash sudo systemctl restart sshd - 对于使用init.d脚本的系统(如较旧版本的Ubuntu、CentOS等): bash sudo service sshd restart 五、验证配置 重启SSH服务后,你需要验证新的SSH端口是否正在监听,并且确保你仍然能够通过新的端口连接到服务器
1.检查端口监听状态 使用`netstat`或`ss`命令来检查新的SSH端口是否正在监听: bash sudo netstat -tuln | grep ssh 或者: bash sudo ss -tuln | grep ssh 你应该能看到类似于`tcp 0 0 0.0.0.0:2222 0.0.0.- 0: LISTEN`的输出,表明端口2222正在监听
2.尝试通过新端口连接 从你的客户端机器上,尝试通过新配置的端口连接到服务器
例如,使用SSH客户端: bash ssh -p 2222 username@server_ip 如果连接成功,说明你的SSH端口配置已经生效
六、更新防火墙规则 如果你的服务器配置了防火墙,别忘了更新防火墙规则以允许新的SSH端口
对于使用ufw的Ubuntu系统: bash sudo ufw allow 2222/tcp sudo ufw delete allow 22/tcp 如果不再需要默认端口22 sudo ufw reload - 对于使用firewalld的CentOS/Fedora系统: bash sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent sudo firewall-cmd --zone=public --remove-port=22/tcp --permanent 如果不再需要默认端口22 sudo firewall-cmd --reload 七、额外安全措施 虽然更改SSH端口已经显著提高了安全性,但还有一些额外的措施可以进一步增强保护: - 禁用密码认证,启用密钥认证:通过编辑`/etc/ssh/sshd_config`,设置`PasswordAuthentication no`