修改ssh配置可提升安全性与连接体验。1. Port 2222减少攻击;2. ListenAddress指定监听IP;3. Protocol 2禁用不安全的SSH-1;4. PermitRootLogin no禁止root直连;5. PasswordAuthentication no关闭密码登录;6. PubkeyAuthentication yes启用密钥认证;7. AllowUsers限制登录用户;8. ClientAliveInterval 300和ClientAliveCountMax 3设置超时断开;9. MaxAuthTries 3防暴力破解;10. PermitEmptyPasswords no禁用空密码;11. AuthorizedKeysFile定义公钥路径;12. LogLevel INFO增强日志记录;13. Usedns no加快连接;14. 启用StrictModes、IgnoreRhosts等安全选项。修改后需sshd -t测试配置并重启服务。

SSH(Secure Shell)是远程管理linux系统最常用的协议之一。其中,sshd_config 是SSH服务端的主配置文件,控制着SSH守护进程(sshd)的行为。正确配置该文件不仅能提升安全性,还能优化连接体验。以下是对常见配置项的详细说明。
1. 端口(Port)
默认情况下,SSH服务监听在22端口。出于安全考虑,建议修改为非常用端口,减少自动化攻击。
Port 22
# 可以设置多个端口,例如:
Port 2222
修改后需重启sshd服务,并确保防火墙放行新端口。
2. 监听地址(ListenAddress)
指定sshd绑定的IP地址。适用于多网卡服务器,限制仅在特定接口监听。
ListenAddress 0.0.0.0
# 或指定具体IP:
ListenAddress 192.168.1.100
ipv6使用 :: 表示所有地址。
3. 协议版本(Protocol)
建议使用SSH协议第2版,更安全。
Protocol 2
SSH-1存在已知漏洞,不推荐启用。
4. 禁止root登录(PermitRootLogin)
直接允许root登录风险较高,建议关闭。
PermitRootLogin no
# 或允许密钥方式登录:
PermitRootLogin prohibit-password
通过普通用户登录后再su或sudo提权更安全。
5. 用户密码认证(PasswordAuthentication)
是否允许密码登录。若使用密钥认证,建议关闭密码登录。
PasswordAuthentication no
关闭前确保已配置好公钥登录,避免被锁在服务器外。
6. 公钥认证(PubkeyAuthentication)
启用基于密钥的身份验证,通常与PasswordAuthentication配合使用。
PubkeyAuthentication yes
用户的公钥保存在 ~/.ssh/authorized_keys 中。
7. 允许登录用户(AllowUsers / DenyUsers)
限制可登录的用户,提高安全性。
AllowUsers alice bob charlie@192.168.1.*
支持用户名、用户名+IP模式。也可用 AllowGroups 限制用户组。
8. 登录超时设置(ClientAliveInterval / ClientAliveCountMax)
防止连接长时间挂起或断线后无法重连。
ClientAliveInterval 300
ClientAliveCountMax 3
表示每300秒发送一次心跳,最多3次无响应则断开连接。
9. 登录尝试限制(MaxAuthTries / MaxSessions)
限制单次连接的认证尝试次数和会话数量。
MaxAuthTries 3
MaxSessions 10
防止暴力破解,合理设置避免误封正常用户。
10. 禁用空密码登录(PermitEmptyPasswords)
禁止使用空密码的账户通过SSH登录。
PermitEmptyPasswords no
即使系统中存在空密码用户,也不应允许其远程登录。
11. 使用密钥登录路径(AuthorizedKeysFile)
定义用户公钥存储位置,默认如下:
AuthorizedKeysFile .ssh/authorized_keys
可自定义路径,但需注意权限和SELinux策略。
12. 日志级别(LogLevel)
设置日志详细程度,便于排查问题。
LogLevel INFO
# 调试时可用 VERBOSE 或 DEBUG
日志通常记录在 /var/log/secure 或 /var/log/auth.log。
13. 禁用DNS反向解析(UseDNS)
关闭DNS查询可加快连接速度。
UseDNS no
否则sshd会尝试解析客户端IP的主机名,可能造成延迟。
14. 其他安全相关选项
- StrictModes yes:检查用户主目录和.ssh目录权限
- IgnoreRhosts yes:忽略.rhosts和.shosts文件
- X11Forwarding no:禁用X转发,除非需要图形界面
- PrintMotd no:登录时不显示/etc/motd内容
这些选项有助于减少潜在攻击面。
修改sshd_config后,务必使用以下命令测试配置语法,避免服务启动失败:
sudo sshd -t
确认无误后重启服务:
sudo systemctl restart sshd
基本上就这些关键配置。合理设置能显著提升SSH服务的安全性和稳定性。


