SSH 配置是保障服务器远程管理安全与效率的基石。无论你是首次接触云服务器的新手,还是需要优化生产环境的运维工程师,掌握一套正确、安全的 SSH 配置方案,都能直接降低被暴力破解与未授权访问的风险,本文将从基础连接、密钥认证、安全加固到实用调优,为你提供一套完整可落地的配置指南,并融入酷番云服务器环境下的实战经验,帮助你一步到位完成配置。
核心结论:用密钥认证 + 禁用密码登录 + 修改默认端口
在绝大多数场景下,最安全的 SSH 配置组合是:生成强密钥对、将公钥部署到服务器、关闭密码认证、并将 SSH 端口从 22 改为高位端口,这套方案能抵御 99% 的自动化扫描攻击,同时保持连接体验流畅,以下所有配置均可在 CentOS、Ubuntu、Debian 等主流 Linux 发行版上直接执行。
第一步:基础连接与首次配置
拿到服务器后,先通过密码方式登录,确认网络与端口连通:
ssh root@你的服务器IP
登录成功后,立即执行系统更新(Ubuntu/Debian 用 apt update && apt upgrade -y,CentOS/RHEL 用 yum update -y),然后检查 SSH 服务状态:
systemctl status sshd
确保服务正常,再开始后续配置。不建议在未配置密钥前直接修改端口,以免意外锁死自己。
第二步:生成密钥对并部署公钥
本地电脑(非服务器)生成 RSA 或 Ed25519 密钥对,推荐使用 Ed25519,它的安全性更高且密钥更短。
ssh-keygen -t ed25519 -C "your_email@example.com"
一路回车即可,默认生成在 ~/.ssh/id_ed25519

和 ~/.ssh/id_ed25519.pub,然后将公钥复制到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的服务器IP
如果没有 ssh-copy-id,可手动追加:
cat ~/.ssh/id_ed25519.pub | ssh root@你的服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
之后用密钥登录测试:
ssh -i ~/.ssh/id_ed25519 root@你的服务器IP
第三步:修改 SSH 配置文件加固安全
编辑服务器上的 /etc/ssh/sshd_config,建议先备份:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
然后修改如下关键项:
Port 2222 # 修改默认端口,避免被扫描 PermitRootLogin no # 禁止 root 直接登录,用普通用户 + sudo PubkeyAuthentication yes # 开启公钥认证 PasswordAuthentication no # 关闭密码认证,防止暴力破解 ChallengeResponseAuthentication no UsePAM no MaxAuthTries 3 # 限制最大认证尝试次数 LoginGraceTime 20 # 登录超时秒数 AllowUsers youruser # 仅允许指定用户登录,多个用空格分隔
修改完成后检查语法并重载:
sshd -t systemctl reload sshd
务必在一个已连接会话中测试新端口和密钥登录,确认无误后再断开旧连接,避免失联。
第四步:创建普通用户并赋予 sudo 权限
出于安全惯例,日常操作不应使用 root,创建一个普通用户:
adduser youruser usermod -aG sudo youruser # Ubuntu/Debian # 或者 usermod -aG wheel youruser # CentOS/RHEL

然后将公钥复制到新用户的 authorized_keys 中,之后所有 SSH 登录都使用该用户,需要管理员权限时用 sudo。
第五步:防火墙与端口放行
修改端口后,务必在防火墙中放行新端口,以 UFW 为例:
ufw allow 2222/tcp ufw delete allow 22/tcp ufw reload
云服务商的安全组也需要同步更改。酷番云经验案例:在酷番云控制台的安全组中,我们通常建议将入方向规则设置为“仅允许指定 IP 访问 SSH 端口”,比如只放行你公司的固定出口 IP,这样做即使 SSH 密钥泄露,外部攻击者也无法从其他 IP 发起连接,结合酷番云的高防云服务器,还能自动拦截 SYN Flood 等 DDoS 攻击,让 SSH 服务更稳定。
第六步:进阶优化SSH 会话保活与多因素认证
会话保活
经常遇到 SSH 长时间无操作断开,可以修改客户端 ~/.ssh/config:
Host myserver
HostName 你的服务器IP
Port 2222
User youruser
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3
服务端在 sshd_config 中也可设置:
ClientAliveInterval 60 ClientAliveCountMax 3
多因素认证(可选)
如果对安全要求极高,可以安装 Google Authenticator 插件,在密码(或密钥)之外增加动态验证码,配置步骤:
apt install libpam-google-authenticator google-authenticator
然后在 /etc/pam.d/sshd 增加一行,并在 sshd_config 中设置 AuthenticationMethods publickey,keyboard-interactive,这样即使密钥泄露,没有手机验证码也无法登录。

第七步:常见问题排查
- 连接超时:检查安全组防火墙端口是否放行,服务端
sshd是否监听新端口(netstat -tlnp | grep ssh)。 - Permission denied (publickey):确认公钥内容与权限,
~/.ssh目录必须为 700,authorized_keys必须为 600。 - 登录后立即断开:大概率是
UserPAM配置冲突,尝试将UsePAM no并重载。 - 找不到 sshd_config:部分系统使用
/etc/ssh/sshd_config,若使用容器或特殊发行版,可用sshd -T查看实际生效配置。
相关问答
问:修改 SSH 端口后,如何防止自己忘记新端口导致无法登录?
答:建议先在本地维护一个 ~/.ssh/config 文件,为每个服务器配置好主机别名和端口,这样登录时只需输入 ssh myserver,无需记忆端口,同时在服务器安全组中临时保留旧端口放行规则,待新端口稳定运行一周后再删除。更保险的方法是添加定时任务(cron)自动备份 SSH 配置文件到本地,一旦出错可快速恢复。
问:密钥认证和密码认证能同时开启吗?为什么推荐只留密钥?
答:可以同时开启,但不推荐,同时开启意味着攻击者仍有尝试密码的通道,暴力破解工具(如 Hydra)依然可能猜中弱密码。关闭密码认证后,即使没有密钥文件,任何密码尝试都会被拒绝,从根源上杜绝暴力破解,如果你担心丢失密钥,可以将私钥加密存储(生成时设置口令),并使用硬件安全密钥或密码管理器保管,这样安全性远高于同时开启密码认证。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/776792.html

