在CentOS系统中,SSH(Secure Shell)是一种常用的远程管理协议,允许用户通过加密连接安全地访问服务器,默认情况下,CentOS可能未启用SSH登录或存在安全限制,因此需要正确配置以确保远程访问的可行性和安全性,以下是关于CentOS允许SSH登录的详细配置步骤和注意事项。

检查SSH服务是否安装
需要确认系统是否已安装SSH服务,CentOS默认可能未安装OpenSSH(SSH的实现工具),可通过以下命令检查:
rpm -q openssh-server openssh-clients
如果输出显示未安装,使用yum或dnf(CentOS 8及以上)安装:
sudo yum install -y openssh-server openssh-clients # CentOS 7及以下 sudo dnf install -y openssh-server openssh-clients # CentOS 8及以上
启动并启用SSH服务
安装完成后,需启动SSH服务并设置开机自启:
sudo systemctl start sshd sudo systemctl enable sshd
通过以下命令检查服务状态:
systemctl status sshd
若显示“active (running)”,则服务已正常运行。

配置SSH服务
SSH的主配置文件为/etc/ssh/sshd_config,需通过编辑该文件调整登录策略,使用vim或nano打开文件:
sudo vim /etc/ssh/sshd_config
关键配置项包括:
- 允许 root 用户登录:默认可能禁止root直接登录,需修改
PermitRootLogin为yes(不推荐)或no(推荐,改用普通用户登录后切换)。 - 允许的用户/组:通过
AllowUsers或AllowGroups限制登录用户,例如AllowUsers user1 user2。 - 端口设置:默认端口为22,可修改
Port为自定义值(如2222)以增强安全性。 - 密码认证:禁用密码认证可提升安全性,改用密钥认证(设置
PasswordAuthentication no)。
配置防火墙规则
CentOS默认使用firewalld或iptables管理防火墙,需开放SSH端口(如22或自定义端口):
- firewalld(CentOS 7及以上):
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
- iptables(CentOS 6及以下):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo service iptables save
重启SSH服务
修改配置后,需重启SSH服务使生效:
sudo systemctl restart sshd
安全注意事项
- 禁用密码认证:建议使用SSH密钥对认证,避免暴力破解,生成密钥对可通过
ssh-keygen命令。 - 定期更新系统:保持系统和SSH服务版本最新,修复已知漏洞。
- 限制登录尝试:通过
fail2ban等工具限制失败登录次数,防止暴力攻击。 - 禁用root直接登录:创建普通用户并配置
sudo权限,减少安全风险。
测试SSH登录
在本地终端使用以下命令测试远程登录:

ssh username@server_ip -p port_number
首次登录需确认主机密钥(输入yes),后续连接将自动验证。
FAQs
Q1: 忘记SSH密码或密钥,无法登录服务器怎么办?
A: 若无法通过SSH登录,可通过控制台(如VNC、iDRAC)或物理终端登录服务器,然后重置SSH用户密码或重新生成密钥对,检查/var/log/secure日志定位问题(如认证失败、配置错误)。
Q2: 如何禁止特定IP地址通过SSH登录?
A: 在/etc/ssh/sshd_config中添加DenyHosts或使用tcp_wrappers控制,在/etc/hosts.deny中添加sshd: 192.168.1.100(禁止该IP登录),或使用firewalld的rich rule:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" reject' sudo firewall-cmd --reload
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复