凌峰创科服务平台

linux服务器ssh配置

Linux服务器SSH配置是系统管理员日常工作中至关重要的环节,它不仅关系到远程访问的便捷性,更直接影响到服务器的安全性,SSH(Secure Shell)是一种加密的网络传输协议,主要用于远程登录和管理服务器,本文将详细介绍Linux服务器SSH配置的各个方面,包括基础配置、安全加固、高级优化以及常见问题的解决方案。

linux服务器ssh配置-图1
(图片来源网络,侵删)

SSH服务的基础配置通常通过修改/etc/ssh/sshd_config文件完成,在配置前,建议先备份原始配置文件,即执行cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak命令,打开配置文件后,以下是一些关键参数的说明:

  1. Port:默认SSH端口为22,出于安全考虑,建议修改为非默认端口(如2222),以降低自动化攻击的风险,修改后需确保防火墙允许新端口的访问。
  2. PermitRootLogin:默认值为yes,允许root用户直接登录,为增强安全性,建议设置为no,强制管理员通过普通用户登录后使用sudo提权。
  3. PasswordAuthentication:默认值为yes,允许密码认证,结合密钥认证时,可将其设置为no,禁用密码登录,仅允许密钥对认证,大幅提升安全性。
  4. PubkeyAuthentication:默认值为yes,启用公钥认证,这是SSH安全的核心配置之一,需配合用户目录下的~/.ssh/authorized_keys文件使用。
  5. AllowUsersDenyUsers:通过指定允许或拒绝的用户列表,限制远程登录的用户范围。AllowUsers user1 user2仅允许user1和user2登录。

完成配置后,需重启SSH服务使配置生效,执行命令systemctl restart sshd(基于systemd的系统)或service sshd restart(CentOS 6等旧系统)。

在安全加固方面,除了上述基础配置外,还可以采取以下措施:

  1. 使用SSH密钥对:生成密钥对对(公钥和私钥)是SSH安全的基础,在客户端执行ssh-keygen -t rsa -b 4096生成密钥,并将公钥(~/.ssh/id_rsa.pub追加到服务器的~/.ssh/authorized_keys文件中,设置正确的文件权限:chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
  2. 禁用空密码登录:确保PermitEmptyPasswords参数设置为no,防止使用空密码的用户登录。
  3. 限制登录尝试:通过MaxAuthTries参数限制每个连接的最大认证尝试次数(如默认为6,可调整为3),并通过LoginGraceTime设置认证超时时间(如默认为120秒,可调整为30秒)。
  4. 使用Fail2ban工具:Fail2ban可以监控SSH日志,并在检测到多次失败登录后自动封禁恶意IP,安装后需配置/etc/fail2ban/jail.local文件,设置[sshd]部分的maxretrybantime参数。
  5. 定期更新SSH软件包:保持SSH服务版本最新,可通过yum update openssh-server(CentOS/RHEL)或apt update && apt upgrade openssh-server(Ubuntu/Debian)更新。

对于高级优化,可根据实际需求调整以下参数:

linux服务器ssh配置-图2
(图片来源网络,侵删)
  1. TCPKeepAlive:默认值为yes,启用TCP保活机制,防止长时间连接因网络问题中断。
  2. ClientAliveIntervalClientAliveCountMax:设置保活间隔时间和最大尝试次数。ClientAliveInterval 60ClientAliveCountMax 3表示每60秒发送一次保活包,最多尝试3次。
  3. UseDNS:默认值为yes,SSH会进行DNS反向解析,可能延迟登录,建议设置为no,禁用DNS反向解析。
  4. MaxSessions:限制单个用户的最大并发会话数,防止资源耗尽攻击(默认为10)。
  5. ChrootDirectory:配置用户登录后的根目录,实现文件系统隔离(需配合Match指令使用)。

以下是一个常见的SSH安全配置参数示例表格:

参数名 默认值 推荐值 说明
Port 22 2222 修改SSH端口
PermitRootLogin yes no 禁止root直接登录
PasswordAuthentication yes no 禁用密码认证
PubkeyAuthentication yes yes 启用公钥认证
AllowUsers user1 user2 限制允许登录的用户
MaxAuthTries 6 3 限制认证尝试次数
UseDNS yes no 禁用DNS反向解析

在配置过程中,可能会遇到一些常见问题,修改SSH端口后无法登录,可能是防火墙未开放新端口,需执行firewall-cmd --permanent --add-port=2222/tcp并重载防火墙;或SELinux策略限制,需执行semanage port -a -t ssh_port_t -p tcp 2222,又如,密钥认证失败,需检查公钥是否正确添加到authorized_keys文件,文件权限是否正确(600),以及服务器端sshd_configPubkeyAuthentication是否为yes

SSH配置的核心原则是“安全优先,兼顾便利”,通过合理配置参数、启用密钥认证、限制登录权限以及结合安全工具,可以有效提升SSH服务的安全性和稳定性,管理员需根据实际业务场景调整配置,并定期审查和优化,确保服务器远程管理的安全高效。

相关问答FAQs

  1. 问:修改SSH端口后无法连接服务器,如何排查?
    答:首先检查防火墙是否开放新端口,如使用firewall-cmd --list-ports查看;其次确认SELinux是否允许新端口,执行semanage port -l | grep ssh;最后检查/etc/ssh/sshd_configPort参数是否正确设置,并重启SSH服务。

  2. 问:如何实现SSH密钥对的批量分发?
    答:可使用ssh-copy-id命令逐个分发,或通过expect脚本自动化输入密码,对于批量管理,可使用Ansibleauthorized_key模块,或编写Shell脚本结合sshpass(需安装)实现,sshpass -p 'password' ssh-copy-id -p 2222 user@host

分享:
扫描分享到社交APP
上一篇
下一篇