在CentOS 7系统中配置SSH服务器是远程管理服务器的常见操作,SSH(Secure Shell)协议提供了加密的通信通道,确保数据传输的安全性,以下将详细介绍CentOS 7下SSH服务器的安装、配置、安全优化及常见问题处理。

SSH服务器的安装与启动
CentOS 7默认已安装OpenSSH服务,若未安装可通过yum包管理器进行安装,执行以下命令更新软件包列表并安装OpenSSH服务器:
sudo yum update -y sudo yum install openssh-server -y
安装完成后,启动SSH服务并设置开机自启:
sudo systemctl start sshd sudo systemctl enable sshd
通过systemctl status sshd命令可查看服务运行状态,若显示active (running)则表示服务已正常启动。
SSH服务的基本配置
SSH服务的主配置文件为/etc/ssh/sshd_config,建议修改前先备份原始配置文件:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用vi或nano编辑器打开配置文件,常见修改项如下:
- 修改监听端口:默认端口为22,为提高安全性可修改为其他端口(如2222),需确保防火墙允许该端口访问:
Port 2222 - 禁止root用户直接登录:增加安全性,限制root用户只能通过普通用户远程登录后再切换:
PermitRootLogin no - 限制登录用户:仅允许特定用户通过SSH登录,在文件中添加:
AllowUsers user1 user2 - 密码认证与密钥认证:建议禁用密码认证,仅允许密钥认证(需提前配置SSH密钥对):
PasswordAuthentication no PubkeyAuthentication yes修改配置文件后,需重启SSH服务使配置生效:
sudo systemctl restart sshd
防火墙与SELinux配置
CentOS 7默认使用firewalld防火墙,需开放SSH服务端口(以默认22端口为例):
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
若修改了SSH端口(如2222),则需手动添加端口规则:

sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
关于SELinux,默认配置下SSH服务可正常运行,若遇到连接问题,可检查SELinux布尔值:
getsebool -a | grep ssh
确保ssh_keysign、ssh_login_allowed_user等布尔值为on,若需修改可通过setsebool -P 布尔值名 on命令调整。
SSH服务器的安全优化措施
- 使用强密码或密钥认证:强制用户设置复杂密码(至少12位,包含大小写字母、数字及特殊字符),或通过
ssh-keygen生成SSH密钥对实现免密登录。 - 定期更新系统:执行
yum update -y及时修复系统漏洞,防止SSH服务被攻击。 - 限制登录尝试次数:通过
fail2ban工具配置防暴力破解,安装后编辑/etc/fail2ban/jail.local文件,添加SSH监狱规则:[sshd] enabled = true port = 22 maxretry = 3 bantime = 3600
启动
fail2ban服务:sudo systemctl start fail2ban sudo systemctl enable fail2ban
- 禁用不必要的协议版本:确保SSH协议版本为2,在
sshd_config中添加:Protocol 2
常见问题排查
- 连接被拒绝:检查SSH服务是否启动(
systemctl status sshd),确认防火墙和SELinux配置是否正确。 - 认证失败:验证用户名、密码或密钥是否正确,检查
/var/log/secure日志文件定位错误原因。
相关问答FAQs
Q1: 如何修改SSH默认端口后仍能正常连接?
A: 修改/etc/ssh/sshd_config中的Port值后,需重启SSH服务(systemctl restart sshd),同时确保防火墙开放新端口(如firewall-cmd --add-port=2222/tcp --permanent并重载防火墙),客户端连接时需指定新端口,例如ssh user@server_ip -p 2222。
Q2: 忘记SSH服务器root密码如何重置?
A: 若可通过物理控制台或VNC登录服务器,可进入单用户模式重置密码:重启服务器,在GRUB引导界面按e键编辑启动参数,找到linux16或linuxefi行,在末尾添加rd.break,按Ctrl+X启动,进入系统后,执行mount -o remount,rw /sysroot,chroot /sysroot,passwd root修改密码,touch /.autorelabel更新SELinux标签,最后执行exit重启服务器。
