通过SSH,你可以安全地登录到远程服务器,执行命令,传输文件等操作
然而,默认的SSH配置往往不是最优的,特别是在安全性方面
因此,修改服务器SSH配置是每一位系统管理员的必修课
本文将详细介绍如何高效且安全地修改服务器SSH配置,以确保你的服务器既方便管理,又足够安全
一、准备工作 在动手修改SSH配置之前,你需要做一些准备工作: 1.备份原始配置文件:SSH的配置文件通常位于`/etc/ssh/sshd_config`
修改之前,务必备份原始文件
```bash sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak ``` 2.了解当前配置:查看当前生效的SSH配置,可以通过运行以下命令,了解哪些配置已经被设置: ```bash sudo sshd -T ``` 3.拥有root权限:修改SSH配置需要root权限,因此你需要以root用户身份登录,或者使用`sudo`命令来提升权限
二、修改SSH配置 1.打开配置文件: 使用你喜欢的文本编辑器打开`/etc/ssh/sshd_config`文件
例如,使用`nano`: ```bash sudo nano /etc/ssh/sshd_config ``` 2.修改端口号: 默认情况下,SSH服务运行在22端口,这是众所周知的事实,因此也是黑客攻击的重点
修改端口号可以显著提升安全性
找到`Port`配置项,修改为你想要的端口号(例如2222): ```plaintext Port 2222 ``` 注意:修改端口号后,你需要确保新的端口在防火墙规则中是开放的,并且客户端在连接时使用新的端口号
3.禁用root登录: 允许root用户直接通过SSH登录是非常危险的
建议禁用root登录,改为使用普通用户登录后再切换到root
找到`PermitRootLogin`配置项,修改为`no`: ```plaintext PermitRootLogin no ``` 4.限制允许登录的用户: 你可以通过`AllowUsers`配置项来限制哪些用户可以通过SSH登录
例如,只允许用户`alice`和`bob`登录: ```plaintext AllowUsers alice bob ``` 注意:如果你使用了`AllowUsers`配置项,那么所有不在这个列表中的用户都将被禁止登录,包括root用户(如果之前没有禁用root登录)
5.禁用密码登录: 密码登录容易遭受暴力破解攻击
建议禁用密码登录,改为使用公钥认证
找到`PasswordAuthentication`配置项,修改为`no`: ```plaintext PasswordAuthentication no ``` 注意:在禁用密码登录之前,请确保你已经配置了公钥认证,并且能够成功登录
6.启用公钥认证: 确保`PubkeyAuthentication`配置项是启用的(默认是启用的): ```plaintext PubkeyAuthentication yes ``` 7.配置SSH密钥文件路径: 你可以指定SSH密钥文件的存放路径
找到`AuthorizedKeysFile`配置项,确保它包含`.ssh/authorized_keys`(这是默认路径): ```plaintext AuthorizedKeysFile .ssh/authorized_keys ``` 注意:如果你的用户分布在不同的目录结构中,你可能需要调整这个路径
8.限制登录尝试次数: 为了防止暴力破解攻击,你可以限制用户登录尝试的次数
找到`MaxAuthTries`配置项,设置一个合理的值(例如3): ```plaintext MaxAuthTries 3 ``` 9.设置登录超时时间: 为了防止用户忘记注销而占用服务器资源,你可以设置登录超时时间
找到`ClientAliveInterval`和`ClientAliveCountMax`配置项,设置如下: ```plaintext ClientAliveInterval 300 客户端每5分钟发送一次心跳包 ClientAliveCountMax 0 如果客户端没有响应,立即断开连接 ``` 这里`ClientAliveInterval`的单位是秒,`ClientAliveCountMax`是允许客户端未响应的心跳包次数
设置为0表示如果客户端没有发送心跳包,立即断开连接
10. 启用日志记录: 启用SSH日志记录可以帮助你追踪和分析可疑的登录尝试
找到`LogLevel`配置项,设置为`VERBOSE`: ```plaintext LogLevel VERBOSE ``` 你还可以指定日志文件的路径,通过`SyslogFacility`和`LogFile`配置项: ```plaintext SyslogFacility AUTHPRIV # LogFile /var/log/sshd.log 如果需要,可以取消注释并指定日志文件路径 ``` 三、重启SSH服务 修改完配置文件后,你需要重启SSH服务以使更改生效
在大多数Linux发行版上,可以使用以下命令重启SSH服务: sudo systemctl restart sshd 或者