### Linux 下 SSH 配置详解
#### 一、配置文件详解
在 Linux 系统中,SSH 服务的配置文件通常位于 `/etc/ssh/sshd_config`。此文件包含了 SSH 服务的各项设置,包括但不限于安全性配置、登录权限管理等。
##### 1.1 基本配置项解释
- **Port**: 指定 SSH 服务监听的端口,默认为 22。
- **Protocol**: 定义 SSH 协议版本,一般设置为 2。
- **HostKey**: 指定 SSH 服务器的公钥文件位置。
- **KeyRegenerationInterval**: 密钥重新生成的时间间隔,单位为秒。
- **ServerKeyBits**: 用于指定服务器密钥的长度。
- **SyslogFacility**: 日志记录级别。
- **LogLevel**: 日志记录的详细程度。
- **LoginGraceTime**: 允许的登录尝试时间,单位为秒。
- **PermitRootLogin**: 是否允许 root 用户登录。
- **PubkeyAuthentication**: 是否允许使用公钥认证。
- **AuthorizedKeysFile**: 授权公钥文件的位置。
- **RhostsAuthentication**: 是否启用 rhosts 文件认证。
- **IgnoreRhosts**: 是否忽略 rhosts 文件。
- **HostbasedAuthentication**: 是否启用基于主机的认证。
- **PasswordAuthentication**: 是否允许密码认证。
- **PermitEmptyPasswords**: 是否允许空密码登录。
- **ChallengeResponseAuthentication**: 是否启用挑战响应认证机制。
- **MaxStartups**: 最大并发连接数。
- **Subsystems**: 启用的子系统。
##### 1.2 示例配置
```bash
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 600
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
RhostsAuthentication no
IgnoreRhosts yes
HostbasedAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
MaxStartups 20
Subsystems sftp /usr/libexec/openssh/sftp-server
```
#### 二、使用公钥认证
**2.1 公钥认证原理**
公钥认证是一种无需输入密码即可完成身份验证的方式。用户在本地生成一对密钥(公钥和私钥),并将公钥放置于服务器用户的 `.ssh/authorized_keys` 文件中。登录时,SSH 客户端使用私钥对一段数据进行加密发送给服务器,服务器使用存储的公钥解密数据以验证用户身份。
**2.2 启用公钥认证步骤**
1. 修改 `/etc/ssh/sshd_config` 配置文件,将 `PasswordAuthentication` 设置为 `no`,禁用密码认证。
2. 使用 `ssh-keygen -t rsa` 在本地生成 RSA 类型的密钥对。
3. 将生成的公钥文件 `id_rsa.pub` 的内容复制到服务器用户的 `.ssh/authorized_keys` 文件中。
4. 移动公钥文件并重命名:
```bash
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
```
5. 将私钥文件拷贝到客户端相应的目录中以便使用。
#### 三、SSH 服务配置
**3.1 SSH 服务配置要点**
1. **监听端口**: 可以根据需要更改监听端口来增强安全性。
2. **协议版本**: 建议仅使用 SSHv2,以提高安全性。
3. **监听地址**: 默认情况下,SSH 服务会监听所有 IP 地址。可以通过设置 `ListenAddress` 来指定监听特定的 IP 地址。
4. **登录控制**: 限制 root 登录或禁止空密码登录。
5. **认证方式**: 可以选择公钥认证、密码认证等多种认证方式组合使用。
通过以上步骤,可以在 Linux 系统中配置一个既安全又实用的 SSH 服务。此外,还可以进一步优化配置,例如使用防火墙规则来进一步限制 SSH 访问,或者定期更新 SSH 服务软件来修复已知的安全漏洞。