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
后,必须重启服务端才能生效:bashsudo systemctl restart ssh
6. 优先级与生效范围
- **
sshd_config
** 的配置仅影响 服务端(如本机的 SSH 服务)。 - **
ssh_config
** 的配置仅影响 客户端(如本机通过ssh
命令连接其他服务器时的行为)。
总结
特性 | sshd_config | ssh_config |
---|---|---|
作用对象 | 服务端(sshd 进程) |
客户端(ssh 命令) |
修改后生效 | 需重启 sshd 服务 |
立即生效(下次连接时应用) |
典型用途 | 控制谁可以连接、如何认证 | 简化客户端连接参数、定义代理 |
关键记忆点:
- 服务端配置用
sshd_config
,客户端配置用ssh_config
。 - 修改端口时,服务端改
sshd_config
,客户端改ssh_config
。