2026-10-24 · SSH / 安全 / 腾讯云

SSH 密钥登录配置,以及一个腾讯云的坑

把服务器交给密码登录,等于把大门钥匙挂在门上——尤其当密码是弱口令时。这篇记录 SSH 密钥登录的完整配置,以及我踩到的一个腾讯云特有的坑。

生成密钥并写入服务器

本地执行(一路回车即可,密码留空):

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_my_server -N ''

然后登录服务器,把公钥写进 authorized_keys:

mkdir -p /root/.ssh && chmod 700 /root/.ssh
echo '粘贴你的公钥' >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

本地 ~/.ssh/config 加个别名,以后 ssh my_server 直接登录:

Host my_server
    HostName 1.2.3.4
    User root
    IdentityFile ~/.ssh/id_ed25519_my_server
    IdentitiesOnly yes

禁用密码登录

改 /etc/ssh/sshd_config:

PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin prohibit-password

KbdInteractiveAuthentication 这一行很关键:开着 UsePAM yes 时,即使关了密码认证,PAM 的键盘交互依然可能接受密码。

改完必须校验再生效,避免把自己锁在门外:

sshd -t && systemctl reload ssh

reload 不会断开现有连接,可以留着当前会话,另开一个窗口验证新连接能进,再关旧会话。

验证

# 应该成功
ssh -o BatchMode=yes my_server 'echo ok'

# 应该被拒绝
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password root@1.2.3.4
# Permission denied (publickey).

腾讯云的坑:微信扫码安全登录

配置过程中我遇到一个情况:密码登录成功后,终端打印出一大段二维码,提示「请使用微信扫码安全登录」,命令不执行。这是腾讯云主机安全(云镜)检测到弱口令/暴力破解风险后开启的强制安全登录。

处理方式:

  • 按提示微信扫码,通过后会话才会放行;
  • 更根本的解决办法就是禁用密码登录、只用密钥——密钥登录不会再被这个机制拦截;
  • 如果服务器在腾讯云控制台的 VNC 也要用密码,那密码该换还是得换。

另外,密钥登录时终端可能还会短暂打印那个扫码横幅(它挂在 Banner 上),但不影响执行,忽略即可。

小结

SSH 加固就四步:生成密钥 → 写入 authorized_keys → 改 sshd_config(三行) → sshd -t 校验后 reload。花 10 分钟,安全性提升一大截。