sshd_config和ssh_config的区别

在 Linux 系统中,sshd_config 和 ssh_config 是 SSH 相关的两个关键配置文件,但它们的作用对象和用途完全不同。以下是它们的核心区别:


1. 功能区别

配置文件作用对象用途
​**sshd_config** SSH 服务器端 配置 SSH ​服务端的行为(如监听端口、认证方式、密钥规则等)。
​**ssh_config** SSH 客户端 配置 SSH ​客户端的行为(如默认端口、代理设置、连接超时等)。

2. 文件路径

配置文件默认路径
sshd_config /etc/ssh/sshd_config
ssh_config /etc/ssh/ssh_config

3. 常见配置项对比

​**sshd_config(服务端配置)​**

plaintext
 
# 服务端监听端口
Port 22

# 允许 root 用户登录
PermitRootLogin no

# 使用密钥认证
PubkeyAuthentication yes

# 禁用密码登录
PasswordAuthentication no

# 日志级别
LogLevel INFO

​**ssh_config(客户端配置)​**

plaintext
 
# 客户端默认连接端口
Port 22

# 使用代理跳转
ProxyJump user@jump-host

# 连接超时时间
ConnectTimeout 10

# 禁用主机密钥检查(慎用!)
StrictHostKeyChecking no

# 指定私钥文件
IdentityFile ~/.ssh/id_rsa

4. 使用场景

​**sshd_config**

  • 修改 SSH 服务端行为
    • 调整监听端口(如从 22 改为 2222)。
    • 限制用户登录(如禁止 root 登录)。
    • 配置密钥认证或双因素认证。
    • 控制日志记录和网络访问规则。

​**ssh_config**

  • 定义客户端默认行为
    • 设置连接远程服务器的默认端口(如所有连接默认使用 2222)。
    • 配置 SSH 代理或隧道(如 ProxyJump)。
    • 定义别名简化连接命令(通过 Host 配置块)。

5. 常见误解

错误场景

  • 误改 ssh_config 来配置服务端端口
    例如:在 ssh_config 中设置 Port 21,期望服务端监听 21 端口。
    结果:客户端会尝试连接远程服务器的 21 端口,但服务端仍监听默认端口(如 22)。

  • 未重启 SSH 服务
    修改 sshd_config 后,必须重启服务端才能生效:

    bash
     
    sudo systemctl restart ssh

6. 优先级与生效范围

  • ​**sshd_config** 的配置仅影响 ​服务端​(如本机的 SSH 服务)。
  • ​**ssh_config** 的配置仅影响 ​客户端​(如本机通过 ssh 命令连接其他服务器时的行为)。

总结

特性sshd_configssh_config
作用对象 服务端(sshd 进程) 客户端(ssh 命令)
修改后生效 需重启 sshd 服务 立即生效(下次连接时应用)
典型用途 控制谁可以连接、如何认证 简化客户端连接参数、定义代理

关键记忆点

  • 服务端配置用 sshd_config,​客户端配置用 ssh_config
  • 修改端口时,服务端改 sshd_config,客户端改 ssh_config
 
posted @ 2025-03-24 12:07  你说夕阳很美  阅读(57)  评论(0)    收藏  举报