SSH 配置详解
SSH(Secure Shell)是用于远程登录和安全数据传输的协议。Ubuntu 默认使用 OpenSSH 服务器,以下是 SSH 的配置步骤、关键文件说明及安全优化建议。
1. 安装 OpenSSH 服务器
Ubuntu 默认可能未安装 SSH 服务器,需手动安装:
bash
sudo apt update
sudo apt install openssh-server
- 安装后,SSH 服务会自动启动。
- 验证服务状态:
sudo systemctl status ssh
(或sshd
)。 - 启用开机自启:
sudo systemctl enable ssh
。
2. SSH 配置文件
主配置文件位于 /etc/ssh/sshd_config
。以下是关键配置项及其说明:
- Port:默认端口是 22,可改为非标准端口(如 2222)以提高安全性。bash
Port 2222
- ListenAddress:指定监听的 IP 地址(如仅允许本地网络访问)。bash
ListenAddress 192.168.1.100
- PermitRootLogin:是否允许 root 用户登录,建议禁用。bash
PermitRootLogin no
- PasswordAuthentication:是否允许密码登录,建议禁用,改用密钥认证。bash
PasswordAuthentication no
- AllowUsers:指定允许登录的用户。bash
AllowUsers user1 user2
- MaxAuthTries:最大登录尝试次数,防止暴力破解。bash
MaxAuthTries 3
- PubkeyAuthentication:启用公钥认证。bash
PubkeyAuthentication yes
3. 配置 SSH 密钥认证
密钥认证比密码登录更安全,步骤如下:
- 生成密钥对(在客户端机器上):bash
ssh-keygen -t rsa -b 4096
- 默认生成
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。 - 可设置密码保护私钥。
- 默认生成
- 将公钥复制到服务器:bash
ssh-copy-id user@server_ip
- 或者手动将
id_rsa.pub
内容追加到服务器的~/.ssh/authorized_keys
。
- 或者手动将
- 禁用密码登录: 编辑
/etc/ssh/sshd_config
,设置:bashPasswordAuthentication no
- 重启 SSH 服务:bash
sudo systemctl restart ssh
4. 安全加固建议
- 更改默认端口:将
Port
改为非 22 端口(如 2222),减少扫描攻击。 - 禁用 root 登录:设置
PermitRootLogin no
。 - 限制用户访问:使用
AllowUsers
或AllowGroups
。 - 使用 Fail2Ban 防止暴力破解:bash
sudo apt install fail2ban
- 配置
/etc/fail2ban/jail.local
,启用 SSH 防护:ini[sshd] enabled = true port = 2222 # 如果更改了默认端口 maxretry = 3 bantime = 3600
- 重启 Fail2Ban:
sudo systemctl restart fail2ban
。
- 配置
- 启用防火墙:使用
ufw
限制 SSH 访问:bashsudo ufw allow 2222/tcp sudo ufw enable
- 定期更新系统:确保 OpenSSH 和系统补丁为最新版本:bash
sudo apt update && sudo apt upgrade
5. 常用 SSH 客户端命令
- 登录服务器:
ssh user@server_ip -p 2222
(指定端口)。 - 传输文件:
scp file user@server_ip:/path
(复制文件到服务器)。 - 调试连接:
ssh -v user@server_ip
(显示详细日志)。
6. 常见问题排查
- 无法连接:检查服务是否运行(
sudo systemctl status ssh
)、端口是否开放(netstat -tuln
)、防火墙规则。 - 权限错误:确保
~/.ssh
权限为 700,authorized_keys
为 600:bashchmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
- 重启服务:每次修改
sshd_config
后,运行:bashsudo systemctl restart ssh