SSH 配置文件可以大大简化连接管理,提高工作效率。SSH 主要有两个配置文件:客户端配置文件和服务器端配置文件。
客户端配置文件
位置
- 全局配置:
/etc/ssh/ssh_config - 用户配置:
~/.ssh/config
常用配置项
bash# ~/.ssh/config 示例 # 基本主机配置 Host server1 HostName 192.168.1.100 User admin Port 2222 IdentityFile ~/.ssh/id_ed25519 # 使用别名 Host production HostName prod.example.com User deploy IdentityFile ~/.ssh/prod_key # 批量配置 Host *.example.com User webadmin IdentityFile ~/.ssh/web_key # 跳板机配置 Host internal-server HostName 10.0.0.50 User root ProxyJump jump.example.com # 其他常用选项 Host dev-server HostName dev.example.com User developer ServerAliveInterval 60 ServerAliveCountMax 3 Compression yes StrictHostKeyChecking no
配置项说明
| 配置项 | 说明 |
|---|---|
HostName | 实际主机名或 IP 地址 |
User | 登录用户名 |
Port | SSH 端口号 |
IdentityFile | 私钥文件路径 |
ProxyJump | 跳板机地址 |
ServerAliveInterval | 保持连接的心跳间隔(秒) |
Compression | 是否启用压缩 |
StrictHostKeyChecking | 主机密钥检查级别 |
服务器端配置文件
位置
- 主配置文件:
/etc/ssh/sshd_config
常用安全配置
bash# /etc/ssh/sshd_config 示例 # 基本设置 Port 22 Protocol 2 # 认证设置 PasswordAuthentication no # 禁用密码认证 PubkeyAuthentication yes # 启用公钥认证 PermitRootLogin no # 禁止 root 登录 MaxAuthTries 3 # 最大认证尝试次数 # 安全加固 X11Forwarding no # 禁用 X11 转发 AllowTcpForwarding yes # 允许 TCP 转发 GatewayPorts no # 禁用网关端口 # 访问控制 AllowUsers admin deploy # 只允许特定用户 DenyUsers test guest # 拒绝特定用户 AllowGroups ssh-users # 只允许特定组 # 性能优化 MaxStartups 10:30:100 # 连接速率限制 LoginGraceTime 60 # 登录超时时间 # 日志 LogLevel INFO # 日志级别 SyslogFacility AUTHPRIV # 日志设施
使用技巧
1. 快速连接
配置后可以直接使用别名连接:
bashssh server1 # 等同于 ssh -p 2222 admin@192.168.1.100
2. 批量操作
bash# 对多个主机执行相同命令 for host in server1 server2 server3; do ssh $host "uptime" done
3. 配置文件优先级
- 命令行参数 > 用户配置文件 > 全局配置文件
- 后出现的配置覆盖前面的配置
4. 配置文件语法
- 使用
Host模式匹配主机 - 使用空格缩进
- 支持通配符
*和? - 使用
#注释
最佳实践
- 使用用户配置文件管理个人连接
- 为不同环境(开发、测试、生产)创建不同的配置
- 定期审查和清理不再使用的配置
- 使用有意义的别名提高可读性
- 在服务器端禁用不安全的功能
- 限制认证尝试次数防止暴力破解