SSH 服务配置详细教程

SSH 服务配置详细教程

SSH(Secure Shell)是一个用于在网络上加密通信的协议,广泛用于远程登录和其他安全网络服务。在 CentOS 7 系统上,SSH 服务通常已经默认安装和启用,但根据需求,可能需要进一步配置以增强安全性和适应特定环境。以下是 SSH 服务的详细配置教程。

一、安装 SSH 服务
  1. 检查 SSH 服务是否已安装

    • 通常,CentOS 7 默认会安装 OpenSSH 服务。可以使用以下命令检查:
      rpm -qa | grep openssh
      
    • 如果未安装,可以使用 yum 进行安装:
      yum install openssh-server openssh-clients -y
      
  2. 启动并启用 SSH 服务

    • 启动 SSH 服务:
      systemctl start sshd
      
    • 设置开机自启:
      systemctl enable sshd
      
  3. 检查 SSH 服务状态

    • 确认 SSH 服务是否在运行:
      systemctl status sshd
      
二、基本配置

SSH 服务的主要配置文件是 /etc/ssh/sshd_config。你可以根据需求修改配置文件,以调整 SSH 服务的行为。

  1. 备份配置文件

    • 在修改之前,建议备份原始配置文件:
      cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
      
  2. 修改配置文件

    • 使用你喜欢的文本编辑器(如 vim)打开 /etc/ssh/sshd_config 文件:
      vim /etc/ssh/sshd_config
      
  3. 常用配置选项

    • 更改 SSH 端口

      • 默认情况下,SSH 使用 22 端口。为了提高安全性,可以更改为非标准端口:
        Port 2222
        
      • 更改后需要在防火墙中放行新端口(见防火墙配置)。
    • 禁止使用 root 用户登录

      • 为了提高安全性,建议禁止 root 直接通过 SSH 登录:
        PermitRootLogin no
        
      • 此时需要确保至少有一个普通用户具有 sudo 权限。
    • 禁止空密码登录

      • 确保不能使用空密码登录:
        PermitEmptyPasswords no
        
    • 限制登录用户

      • 只允许特定用户通过 SSH 登录:
        AllowUsers user1 user2
        
      • 也可以使用 DenyUsers 指令来禁止特定用户。
    • 启用/禁用密码认证

      • 如果你希望仅通过密钥对认证登录,可以禁用密码认证:
        PasswordAuthentication no
        
    • 启用/禁用公钥认证

      • 如果要启用公钥认证(推荐),确保以下配置项为 yes
        PubkeyAuthentication yes
        
  4. 保存并退出编辑器

  5. 重启 SSH 服务

    • 在更改配置文件后,需要重启 SSH 服务以使更改生效:
      systemctl restart sshd
      
三、配置 SSH 密钥对认证

SSH 密钥对认证比密码认证更为安全,推荐使用。

  1. 生成 SSH 密钥对

    • 在客户端(你的本地计算机)上生成 SSH 密钥对:
      ssh-keygen -t rsa -b 4096
      
    • 按提示设置文件路径和密钥密码(可选)。默认情况下,密钥保存在 ~/.ssh/id_rsa~/.ssh/id_rsa.pub
  2. 将公钥复制到服务器

    • 使用 ssh-copy-id 将公钥传输到服务器:
      ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
      
    • 如果没有 ssh-copy-id,可以手动复制公钥内容并添加到服务器的 ~/.ssh/authorized_keys 文件中。
  3. 配置服务器以支持密钥认证

    • 确保 /etc/ssh/sshd_config 中已启用以下配置:
      PubkeyAuthentication yes
      
    • 并确保 ~/.ssh/authorized_keys 文件的权限为 600,.ssh 目录的权限为 700。
  4. 测试登录

    • 在客户端,使用密钥对登录:
      ssh username@server_ip -p 2222
      
    • 如果一切正常,你将不再需要输入密码。
四、防火墙配置
  1. 开放 SSH 服务端口
    • 如果更改了 SSH 端口,需要在防火墙中开放新端口:
      firewall-cmd --permanent --add-port=2222/tcp
      firewall-cmd --reload
      
    • 如果未更改端口,确保默认的 22 端口已开放:
      firewall-cmd --permanent --add-service=ssh
      firewall-cmd --reload
      
五、SELinux 配置(可选)

如果启用了 SELinux,并且更改了 SSH 端口,需要更新 SELinux 配置。

  1. 添加新的 SSH 端口

    semanage port -a -t ssh_port_t -p tcp 2222
    
  2. 重启 SSH 服务

    systemctl restart sshd
    
六、日志和故障排查
  1. 查看 SSH 服务日志

    • 如果 SSH 服务遇到问题,可以查看日志来排查:
      journalctl -u sshd
      
    • 日志文件通常也位于 /var/log/secure
  2. 故障排查

    • 检查 SSH 配置语法是否正确:
      sshd -t
      
    • 如果出现错误,SSH 服务将提示出错的行号和原因。
七、总结

通过以上步骤,你可以在 CentOS 7 系统上安全地配置 SSH 服务。配置好 SSH 之后,你可以根据需要进一步增强安全性,比如启用双因素认证(2FA),或者设置 IP 限制,确保服务器的安全性和稳定性。定期检查和更新 SSH 配置,可以防范潜在的安全风险。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲人编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值