一、安装与启动SSH服务
在CentOS上设置SSH远程管理的第一步是确保OpenSSH服务器已安装并运行。默认情况下,CentOS系统通常预装openssh-server,可通过以下命令验证:
sudo systemctl status sshd
若未安装,使用yum包管理器安装:
sudo yum install openssh-server -y
安装完成后,启动SSH服务并设置为开机自启(确保系统重启后SSH服务自动运行):
sudo systemctl start sshd
sudo systemctl enable sshd
二、配置防火墙允许SSH连接
CentOS 7及以上版本默认使用firewalld作为防火墙,需开放SSH服务对应的端口(默认22):
sudo firewall-cmd --permanent --add-service=ssh # 永久添加SSH服务规则
sudo firewall-cmd --reload # 重新加载防火墙配置使规则生效
若需限制SSH访问的IP范围,可使用更精细的富规则(例如仅允许192.168.1.0/24网段访问):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
sudo firewall-cmd --reload
三、优化SSH配置文件提升安全性
SSH的核心配置文件为/etc/ssh/sshd_config,需通过编辑该文件调整以下关键参数(修改前建议备份原文件):
#Port 22修改为其他端口(如2222),减少针对默认端口的自动化扫描攻击:Port 2222
PermitRootLogin no
AllowUsers指令指定可登录的用户(例如仅允许user1和user2登录):AllowUsers user1 user2
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries参数(如3次),超过次数后断开连接,防止暴力破解:MaxAuthTries 3
修改完成后,重启SSH服务使配置生效:
sudo systemctl restart sshd
四、配置SSH密钥认证(可选但推荐)
密钥认证比密码认证更安全,能有效防止密码泄露导致的服务器入侵。步骤如下:
ssh-keygen命令生成RSA密钥对(默认保存路径为~/.ssh/id_rsa,私钥;~/.ssh/id_rsa.pub,公钥):ssh-keygen -t rsa -b 4096
按提示操作(可直接按回车键使用默认路径和空密码)。ssh-copy-id命令将本地公钥复制到远程服务器的~/.ssh/authorized_keys文件中(需输入远程用户的密码):ssh-copy-id user1@remote_ip -p 2222 # 若修改了SSH端口,需添加-p参数指定端口
ssh user1@remote_ip -p 2222
五、使用Fail2Ban防止暴力破解(可选)
Fail2Ban是一款入侵防御工具,可监控SSH登录日志,自动封禁多次尝试失败的IP地址。安装与配置步骤如下:
sudo yum install epel-release -y # 安装EPEL仓库
sudo yum install fail2ban -y # 安装Fail2Ban
/etc/fail2ban/jail.local文件,添加SSH防护规则:[sshd]
enabled = true # 启用SSH防护
port = ssh # 监控SSH端口(默认22,若修改了端口需同步调整)
filter = sshd # 使用sshd过滤规则
logpath = /var/log/secure # SSH登录日志路径
maxretry = 3 # 允许的最大失败次数
bantime = 600 # 封禁时间(秒),例如600秒=10分钟
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
六、测试SSH连接
完成上述配置后,从本地计算机测试SSH连接:
ssh user1@remote_ip -p 2222 # 若未修改端口,可省略-p参数
若配置了密钥认证,直接登录;若使用密码认证,输入用户密码即可。若连接失败,可通过tail -f /var/log/secure查看SSH日志排查问题(如端口未开放、配置文件语法错误等)。