Linux SSH配置文件sshd_config详解

修改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测试配置并重启服务。

Linux SSH配置文件sshd_config详解

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)

防止连接长时间挂起或断线后无法重连。

Linux SSH配置文件sshd_config详解

标贝悦读AI配音

在线文字转语音软件-专业的配音网站

Linux SSH配置文件sshd_config详解20

查看详情 Linux SSH配置文件sshd_config详解

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服务的安全性和稳定性。

上一篇
下一篇
text=ZqhQzanResources