开启SSH服务是保障服务器远程管理安全与效率的核心操作,无论使用何种Linux发行版,其本质均为安装OpenSSH服务端、修改配置文件加固安全策略、放行防火墙端口并启动守护进程。对于绝大多数生产环境,建议直接使用系统自带的包管理器安装,并强制禁用root账户的直接登录,同时将默认端口从22修改为高位端口,这是平衡安全性与可用性的最佳实践方案。

环境准备与软件包安装
在执行任何操作前,必须确保服务器具备网络连接且拥有root或sudo权限,不同操作系统在服务器怎么开启ssh的具体命令上存在细微差异,但逻辑高度一致。
-
Debian/Ubuntu系列系统
这类系统默认可能未安装SSH服务端,需更新软件源列表以保证获取最新版本。
执行命令:sudo apt update
安装核心组件:sudo apt install openssh-server -y
安装完成后,系统会自动创建ssh用户组和相关服务脚本。 -
CentOS/RHEL系列系统
红帽系系统通常预装了openssh-server,但需确认其状态。
检查安装状态:rpm -qa | grep openssh-server
若未安装,执行:sudo yum install openssh-server -y
核心配置文件修改与安全加固
安装仅是第一步,配置文件的修改才是决定服务安全性的关键环节,主配置文件通常位于/etc/ssh/sshd_config,建议在修改前备份原文件:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup。
-
修改默认监听端口
SSH默认使用22端口,这是自动化扫描工具和暴力破解脚本的首选目标。
编辑配置文件,找到#Port 22一行。
建议修改为10000-65535之间的高位端口,Port 22222。
此举能规避99%的自动化恶意扫描,显著降低服务器被攻击的风险。 -
禁止Root账户直接登录
Root权限过大,一旦密码泄露后果不堪设想。
找到PermitRootLogin参数,将其修改为:PermitRootLogin no。
这是SSH安全配置中的红线原则,必须严格执行。
在此之前,请务必确认已创建一个具有sudo权限的普通用户,否则将无法远程管理服务器。 -
启用密钥认证并禁用密码登录
密码认证容易遭受字典攻击,密钥认证则基于非对称加密算法,安全性极高。
在本地客户端生成密钥对:ssh-keygen -t rsa -b 4096。
将公钥上传至服务器:ssh-copy-id -p 端口号 用户名@服务器IP。
测试密钥登录成功后,修改配置文件:PasswordAuthentication no。
只有在禁用密码登录后,SSH服务的安全等级才算达到生产环境标准。
防火墙策略配置与端口放行

修改了SSH端口后,若不及时更新防火墙规则,将导致连接中断,这是新手最容易犯的错误。
-
UFW防火墙(Ubuntu/Debian)
UFW管理简单,规则清晰。
放行新端口:sudo ufw allow 22222/tcp
查看状态:sudo ufw status
确保状态为active。 -
Firewalld防火墙(CentOS/RHEL 7+)
Firewalld基于区域管理,需将端口添加至public区域。
添加端口:sudo firewall-cmd --permanent --add-port=22222/tcp
重载配置:sudo firewall-cmd --reload
务必使用--permanent参数,否则重启后规则失效。 -
云服务商安全组
若服务器部署在阿里云、腾讯云等公有云平台,安全组的配置优先级高于服务器内部防火墙。
必须登录云控制台,在安全组入站规则中放行修改后的SSH端口号,协议类型选择TCP。
服务启动、自启设置与连接测试
配置完成后,需启动服务并设置开机自启,确保服务器重启后SSH依然可用。
-
启动与启用服务
使用Systemd管理服务(现代Linux发行版标准)。
启动服务:sudo systemctl start sshd
设置开机自启:sudo systemctl enable sshd
检查运行状态:sudo systemctl status sshd
若显示“active (running)”且无报错信息,说明配置语法正确。 -
验证连接
在本地终端尝试连接,切勿直接关闭当前会话窗口,应新开一个窗口进行测试。
连接命令:ssh -p 22222 username@server_ip
输入密钥密码或用户密码,成功登录即代表配置完成。
常见故障排查与专业建议
即便按步骤操作,网络环境差异可能导致连接失败。

-
检查端口监听
使用netstat -tunlp | grep sshd确认服务是否监听在指定端口。
若未监听,说明配置文件有误或服务未启动,查看日志/var/log/secure定位具体原因。 -
排查网络连通性
使用telnet server_ip port测试端口可达性。
若不通,优先检查云平台安全组,其次检查服务器内部防火墙,最后检查本地网络。 -
SELinux干扰处理
CentOS系统默认开启SELinux,若修改了非标准端口,需调整SELinux上下文。
安装工具:yum install policycoreutils-python
添加端口标签:semanage port -a -t ssh_port_t -p tcp 22222
忽略SELinux配置是导致端口修改后服务无法启动的常见原因。
相关问答
问:修改SSH端口后,连接提示“Connection refused”怎么办?
答:这通常意味着服务未在该端口监听或防火墙拦截,首先检查sshd服务是否正常运行,使用systemctl status sshd查看状态,检查防火墙是否放行新端口,包括服务器内部防火墙(UFW/Firewalld)和云服务商的安全组,确认配置文件中端口号是否修改正确且去除了注释符号。
问:服务器SSH服务开启后,如何防止暴力破解?
答:除了上述的禁用密码登录和修改端口外,建议安装Fail2ban工具,它能自动监控日志文件,将多次尝试失败IP地址通过防火墙封禁,配置时需注意将监控端口设置为修改后的SSH端口,并合理设置封禁时间,这是提升服务器安全性的有效补充手段。
如果您在配置过程中遇到其他问题,或有独特的SSH加固技巧,欢迎在评论区留言交流。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/96507.html