在CentOS系统中开启SSH服务是远程管理服务器的常见需求,通过SSH协议可以安全地进行文件传输、命令执行等操作,以下是详细的配置步骤和注意事项,帮助用户顺利完成SSH服务的启用和优化。

检查SSH服务是否已安装
首先需要确认系统中是否已安装SSH服务包,CentOS默认可能未安装OpenSSH,可通过以下命令检查:
rpm -qa | grep openssh
如果返回类似openssh-server-8.0p1-10.el8.x86_64的结果,说明已安装,若未安装,使用yum或dnf命令安装:
sudo yum install openssh-server -y
安装完成后,系统会自动创建SSH配置文件和相关目录。
启动并设置SSH服务开机自启
安装完成后,需手动启动SSH服务并设置为开机自动启动,确保服务持久可用:
sudo systemctl start sshd sudo systemctl enable sshd
通过以下命令验证服务状态:
sudo systemctl status sshd
若显示active (running),表示服务已正常运行。

配置防火墙规则
CentOS默认启用防火墙(firewalld),需开放SSH默认端口(22)以允许远程连接:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
若需修改SSH端口,需在防火墙中同时添加新端口,并修改SSH配置文件中的Port指令。
修改SSH配置文件(可选)
SSH主配置文件位于/etc/ssh/sshd_config,可通过vim或nano编辑:
sudo vim /etc/ssh/sshd_config
建议修改以下参数以增强安全性:
- 禁用root直接登录:将
PermitRootLogin设为no - 更改默认端口:修改
Port为非特权端口(如2222) - 限制登录用户:在
AllowUsers后添加允许的用户名 修改后保存文件,并重启SSH服务使配置生效:sudo systemctl restart sshd
生成SSH密钥对(推荐)
为提升安全性,建议使用SSH密钥认证替代密码登录,在本地客户端生成密钥:
ssh-keygen -t rsa -b 4096
将公钥传输到服务器:

ssh-copy-id username@server_ip
首次连接时需输入用户密码,之后即可免密登录。
常见问题排查
若无法连接SSH,可检查以下事项:
- 确认服务端口是否开放:
ss -tulnp | grep sshd - 检查日志文件:
/var/log/secure中的错误信息 - 验证防火墙和SELinux设置是否阻止连接
FAQs
Q: 忘记修改SSH密码且无法登录怎么办?
A: 可通过控制台(如VNC)登录服务器,重置用户密码后修改sshd_config中的PasswordAuthentication为yes,重启服务。
Q: 如何限制特定IP访问SSH?
A: 在/etc/hosts.allow和/etc/hosts.deny中配置TCP Wrappers规则,或使用防火墙的rich rule:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'