凌峰创科服务平台

CentOS SSH服务器配置步骤有哪些?

在CentOS系统中配置SSH服务器是远程管理和维护服务器的常见操作,通过SSH(Secure Shell)可以实现加密的远程登录、文件传输等功能,确保数据传输的安全性,以下是详细的配置步骤和注意事项,涵盖SSH服务安装、基本配置、安全加固及常见问题处理等内容。

CentOS SSH服务器配置步骤有哪些?-图1
(图片来源网络,侵删)

SSH服务安装与启动

CentOS系统默认可能未安装SSH服务,需手动安装,以root用户或具有sudo权限的用户执行以下操作:

  1. 检查是否已安装SSH服务
    执行命令rpm -q openssh-server,若返回包名则已安装,否则需安装。
  2. 安装SSH服务
    使用yum包管理器安装,命令为yum install openssh-server openssh-clients -y,其中openssh-server为服务器端组件,openssh-clients为客户端工具。
  3. 启动并设置开机自启
    安装后启动SSH服务:systemctl start sshd,设置开机自启:systemctl enable sshd,可通过systemctl status sshd查看服务状态,确保active(running)。

SSH服务配置文件修改

SSH服务的核心配置文件为/etc/ssh/sshd_config,使用文本编辑器(如vi)打开后,可根据需求修改以下关键参数:

参数名 默认值 推荐值/说明
Port 22 修改为非默认端口(如2222),降低被自动化攻击扫描的概率
PermitRootLogin yes 建议设为no,禁止root直接远程登录,需通过普通用户登录后切换
PasswordAuthentication yes 可结合密钥认证设为no,提升安全性;若需密码登录,建议结合复杂密码策略
PubkeyAuthentication yes 启用公钥认证,更安全;需在用户目录生成.ssh/authorized_keys文件
PermitEmptyPasswords no 禁止空密码登录
MaxAuthTries 6 限制每连接最大认证尝试次数,防止暴力破解
LoginGraceTime 120 设置登录认证超时时间(秒),超时自动断开
AllowUsers 限制允许登录的用户,如AllowUsers user1 user2,仅允许指定用户登录
DenyUsers 明确禁止登录的用户,如DenyUsers testuser

修改后注意事项

  • 保存配置文件后,需执行systemctl restart sshd使配置生效。
  • 若修改了SSH端口(如2222),需确保防火墙允许该端口访问(firewall-cmd --permanent --add-port=2222/tcp并重载防火墙firewall-cmd --reload)。
  • 建议先通过终端直接操作服务器修改配置,避免因配置错误导致无法远程登录。

SSH安全加固措施

  1. 密钥认证替代密码认证

    CentOS SSH服务器配置步骤有哪些?-图2
    (图片来源网络,侵删)
    • 在客户端生成密钥对:ssh-keygen -t rsa -b 4096,默认生成~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)。
    • 复制到服务器的目标用户目录~/.ssh/authorized_keys中,并设置权限:chmod 600 ~/.ssh/authorized_keyschmod 700 ~/.ssh
    • 服务器端配置PasswordAuthentication no后重启SSH服务,仅允许密钥登录。
  2. 禁用不必要的用户和协议

    • 锁定不活跃的系统用户:passwd -l username,或删除用户:userdel -r username
    • 禁用SSHv1协议(不安全):确保配置文件中Protocol 2(默认为SSHv2)。
  3. 使用fail2ban防暴力破解
    安装fail2ban:yum install fail2ban -y,配置/etc/fail2ban/jail.local,设置SSH监禁规则,如:

    [sshd]
    enabled = true
    port = 2222
    filter = sshd
    logpath = /var/log/secure
    maxretry = 3
    bantime = 3600

    启动fail2ban:systemctl start fail2ban并设置开机自启。

SSH客户端连接测试

  1. 使用密码登录
    命令:ssh -p 2222 username@服务器IP,输入密码后连接。
  2. 使用密钥登录
    命令:ssh -p 2222 -i ~/.ssh/id_rsa username@服务器IP,无需输入密码(需确保私钥权限为600)。

常见问题排查

  1. 连接超时或被拒绝
    • 检查SSH服务状态:systemctl status sshd
    • 检查防火墙规则:firewall-cmd --list-ports,确认SSH端口已开放。
    • 检查SELinux状态:sestatus,若为 enforcing,可临时测试关闭setenforce 0(需配置SELinux策略)。
  2. 认证失败
    • 检查服务器端/var/log/secure日志,定位错误原因(如密码错误、密钥不匹配)。
    • 确认authorized_keys文件权限正确,且公钥格式无误(避免包含多余字符)。

相关问答FAQs

Q1: 修改SSH端口后无法连接,如何排查?
A1: 首先检查防火墙是否开放新端口(如2222),执行firewall-cmd --list-ports确认;其次检查SELinux是否阻止,临时关闭SELinux测试(setenforce 0);最后检查SSH服务配置文件sshd_configPort参数是否正确修改并重启服务(systemctl restart sshd),若仍无法连接,查看服务器安全组(云服务器)或iptables规则,确保端口未被拦截。

CentOS SSH服务器配置步骤有哪些?-图3
(图片来源网络,侵删)

Q2: 如何限制仅允许特定IP地址访问SSH服务?
A2: 可通过TCP Wrappers或防火墙实现。

  • 方法一(TCP Wrappers):编辑/etc/hosts.allow,添加sshd: 192.168.1.100, 10.0.0.50(允许的IP),在/etc/hosts.deny中添加sshd: ALL(拒绝其他IP)。
  • 方法二(firewalld):执行firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept',重载防火墙firewall-cmd --reload
    注意:结合AllowUsersDenyUsers参数可实现更精细的用户控制。
分享:
扫描分享到社交APP
上一篇
下一篇