SSH(Secure Shell)是 Linux 远程管理的核心服务。本文涵盖 OpenSSH 服务端安装、核心配置文件详解、密钥认证设置、禁用密码登录、修改默认端口、限制用户/IP 访问等安全加固最佳实践。
# CentOS / RHEL / Fedora
sudo yum install openssh-server
sudo systemctl enable --now sshd
# Debian / Ubuntu
sudo apt-get install openssh-server
sudo systemctl enable --now ssh
修改后需 sudo systemctl reload sshd 生效。关键参数:
| 参数 | 建议值 | 说明 |
|---|---|---|
Port | 2222 | 修改默认端口减少自动扫描攻击 |
PermitRootLogin | prohibit-password | 仅允许密钥登录 root,禁止密码 |
PubkeyAuthentication | yes | 启用公钥认证 |
PasswordAuthentication | no | 禁用密码认证(需先配置好密钥) |
PermitEmptyPasswords | no | 禁止空密码 |
MaxAuthTries | 3 | 限制认证尝试次数 |
ClientAliveInterval | 300 | 心跳间隔(秒),防止断连 |
ClientAliveCountMax | 2 | 心跳失败最大次数 |
AllowUsers | admin user1 | 仅允许列出用户登录 |
DenyUsers | root daemon | 拒绝列出用户(优先级高于 AllowUsers) |
AllowGroups | wheel sshusers | 仅允许特定组用户登录 |
Banner | /etc/ssh/banner | 登录前显示法律警告 |
ssh-keygen -t ed25519 -C "user@host"
# 或 RSA 4096
ssh-keygen -t rsa -b 4096
ssh-copy-id -p 2222 user@server
# 或手动
cat ~/.ssh/id_ed25519.pub | ssh -p 2222 user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
ssh -p 2222 user@server
sshd_config:PasswordAuthentication no,重载服务。# firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
# iptables
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
sudo service iptables save
sudo yum install fail2ban
# 编辑 /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
sudo systemctl enable --now fail2ban



完成上述配置,即可获得安全、高效的 SSH 远程管理环境。建议定期审计 /var/log/secure 与 lastb,及时发现异常登录尝试。