服务器开启SSH服务是实现远程管理与数据传输的核心操作,直接决定了服务器的可维护性与操作效率。在Linux环境下,SSH(Secure Shell)协议不仅加密了所有传输数据,防止中间人攻击与DNS欺骗,更是运维人员进行自动化部署、故障排查的必备通道。 核心结论在于:正确开启SSH服务不仅仅是运行一条指令,更是一个涉及安装、配置、防火墙放行以及安全加固的系统性工程,必须在确保连通性的前提下,最大程度地规避安全风险。

环境检测与软件包安装
在执行任何操作前,必须确认系统环境,不同的Linux发行版,其包管理工具与SSH服务名称略有差异。
- 确认系统版本:通过
cat /etc/os-release命令查看系统版本,Ubuntu/Debian系与CentOS/RHEL系的操作指令存在细微差别,盲目执行可能导致依赖冲突。 - 检查安装状态:默认情况下,主流云服务器镜像已预装OpenSSH,使用
ssh -V命令检查版本信息,若提示“command not found”,则需手动安装。 - 执行安装指令:
- 对于Ubuntu/Debian系统,执行:
sudo apt update && sudo apt install openssh-server -y。 - 对于CentOS/RHEL系统,执行:
sudo yum install openssh-server -y。
安装过程应确保网络畅通,避免因源地址不可达导致安装失败。
- 对于Ubuntu/Debian系统,执行:
服务启动与开机自启配置
软件安装完毕后,服务并不会立即生效,需手动启动并加入开机启动项,防止服务器重启后无法连接。
- 启动SSH服务:使用
sudo systemctl start sshd(CentOS)或sudo systemctl start ssh(Ubuntu)指令,系统会监听默认的22端口。 - 设置开机自启:执行
sudo systemctl enable sshd或sudo systemctl enable ssh。这一步至关重要,忽略此步骤将导致服务器重启后必须通过控制台VNC手动开启服务,极大增加运维成本。 - 验证运行状态:输入
sudo systemctl status sshd,若显示“active (running)”且为绿色,表明服务进程正常。
防火墙配置与端口放行
这是新手最容易忽略的环节,即便SSH服务正常运行,如果防火墙未放行端口,外部连接请求将被拦截。

- 检查防火墙状态:使用
sudo ufw status(Ubuntu)或sudo firewall-cmd --state(CentOS)确认防火墙是否开启。生产环境强烈建议开启防火墙,而非直接关闭。 - 放行默认端口:
- Ubuntu执行:
sudo ufw allow 22。 - CentOS执行:
sudo firewall-cmd --permanent --add-port=22/tcp,随后执行sudo firewall-cmd --reload重载配置。
- Ubuntu执行:
- 云平台安全组设置:除了系统内部防火墙,阿里云、腾讯云等云服务商在控制台设有“安全组”。必须在安全组入站规则中放行TCP协议的22端口,否则任何系统内的配置都无法建立连接。
核心配置文件修改与安全加固
默认配置虽然能用,但存在安全隐患,修改/etc/ssh/sshd_config文件是提升安全等级的关键步骤。
- 修改默认端口:将
#Port 22修改为Port 2222(或其他非常见端口),攻击者通常批量扫描22端口,修改端口可规避90%以上的自动化扫描攻击。 - 禁止Root远程登录:将
PermitRootLogin yes改为PermitRootLogin no。Root权限过大,一旦密码泄露后果不堪设想。 正确做法是创建普通用户,通过sudo提权。 - 禁用密码登录,启用密钥认证:
- 将
PasswordAuthentication yes改为no。 - 将
PubkeyAuthentication yes启用。 - 密钥认证基于非对称加密,暴力破解几乎不可能实现,是目前最安全的认证方式。
- 将
- 重载配置:修改完成后,务必执行
sudo systemctl restart sshd使配置生效。
连接测试与故障排查
完成上述步骤后,需进行全流程测试,建议在断开当前连接前,新开一个终端窗口进行测试,以免配置错误导致锁死。
- 本地连接测试:在本地终端输入
ssh username@server_ip -p port。 - 查看日志排查:若连接被拒绝,查看
/var/log/secure或/var/log/auth.log日志文件,日志会精确记录“Permission denied”或“Connection refused”的具体原因。 - 网络连通性测试:使用
telnet server_ip port测试端口是否通,若不通,需回头检查防火墙与安全组。
在服务器开启ssh的过程中,安全性与便利性往往需要权衡。核心原则是“最小权限原则”与“加密传输原则”。 只要遵循上述步骤,不仅能成功开启服务,更能构建起一道坚固的远程访问防线。
相关问答

服务器开启SSH后,提示“Connection refused”怎么办?
这种情况通常由三个原因导致,检查SSH服务是否启动,使用systemctl status sshd确认状态,检查端口是否正确,如果修改了默认端口,连接时必须指定-p参数,检查防火墙与安全组,确认系统防火墙与云平台安全组均已放行对应端口。
为什么要禁止Root用户直接登录SSH?
Root用户拥有系统的最高权限,一旦被暴力破解成功,攻击者将完全控制服务器,通过创建普通用户登录,再利用sudo执行特权命令,可以增加攻击者的攻击路径长度,同时便于审计操作行为,这是Linux服务器安全加固的行业标准做法。
如果您在配置过程中遇到其他问题,或者有独特的安全加固技巧,欢迎在评论区留言交流。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/137502.html