SSH 密钥登录与安全加固教程：告别密码，更安全更省心 SSH（Secure Shell）是远程登录服务器最常用的协议。默认情况下，很多人习惯用"密码登录"，但密码很容易被暴力破解。改用密钥登录不仅能免密登录，安全性也大幅提升。本文内容依据 OpenSSH 官方手册（ssh(1)、sshd_config(5)）整理。一、SSH 登录的两种方式密码登录：输入用户名 + 密码。简单，但存在被暴力破解的风险。密钥登录：使用一对"私钥 + 公钥"进行认证。私钥留在自己电脑，公钥放到服务器上。登录时无需输密码，安全性更高。推荐用密钥登录，并逐步关闭密码登录。二、生成密钥对在你自己的电脑（客户端）上生成密钥对： ssh-keygen -t ed25519 -C "你的备注" 命令说明： -t ed25519：使用 Ed25519 算法（现代、安全、密钥短，推荐） -C "备注"：加一段注释，方便辨认，通常写邮箱执行后会提示：保存路径：直接回车，默认保存到 ~/.ssh/id_ed25519 设置密码短语（passphrase）：可以回车留空（免密），也可以设置一个密码短语增强私钥安全如果你的服务器或客户端较老，不支持 Ed25519，可以用传统的 RSA： ssh-keygen -t rsa -b 4096 -C "你的备注" 生成后，~/.ssh/ 目录下会有两个文件： id_ed25519：私钥（务必保密，不要上传、不要发给任何人） id_ed25519.pub：公钥（可以公开，放到服务器上）三、把公钥上传到服务器使用 ssh-copy-id 一键把公钥安装到服务器（首次会要求输入一次服务器密码）： ssh-copy-id user@服务器IP 执行后，公钥会被追加到服务器上对应用户的 ~/.ssh/authorized_keys 文件中。如果你的服务器 SSH 端口不是默认 22，可以这样指定： ssh-copy-id -p 2222 user@服务器IP 如果系统没有 ssh-copy-id 命令，可以手动复制：把本地 id_ed25519.pub 的内容追加到服务器 ~/.ssh/authorized_keys 文件里。四、测试密钥登录上传完成后，直接 SSH 登录测试： ssh user@服务器IP 如果无需输入密码（或只需输入密钥的 passphrase）就登录成功，说明配置完成。五、查看公钥内容如果需要手动复制公钥，用下面的命令查看： cat ~/.ssh/id_ed25519.pub 输出的内容类似： ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxx... 你的备注把这一整行内容放进服务器的 ~/.ssh/authorized_keys 即可。六、安全加固：修改服务器配置登录服务器后，用 root 权限编辑 SSH 服务配置： sudo nano /etc/ssh/sshd_config 1. 关闭密码登录找到（或添加）这一行： PasswordAuthentication no 设置成 no 后，只能通过密钥登录，彻底杜绝密码暴力破解。 2. 禁止 root 直接登录 PermitRootLogin no 禁止 root 直接登录，日常用普通用户 + sudo 提权，更安全。 3. 修改默认端口（可选） Port 2222 把默认的 22 改成别的端口，可以避开大量自动扫描（改了之后登录要加 -p 2222）。重要提醒：在关闭密码登录、禁止 root 登录之前，务必先确认你的密钥登录已经能正常使用，否则改完自己就登录不进去了。修改完后保存，重启 SSH 服务使配置生效： # Debian / Ubuntu sudo systemctl restart ssh # CentOS / RHEL sudo systemctl restart sshd 七、客户端简化登录（Config 文件）如果经常登录同一台服务器，可以编辑本地 ~/.ssh/config，用别名简化登录： Host myvps HostName 服务器IP User user Port 2222 IdentityFile ~/.ssh/id_ed25519 之后只需输入： ssh myvps 即可一键登录。八、总结步骤命令/配置生成密钥 ssh-keygen -t ed25519 -C "备注" 上传公钥 ssh-copy-id user@IP 测试登录 ssh user@IP 关闭密码登录 PasswordAuthentication no 禁止 root 登录 PermitRootLogin no 密钥登录是服务器安全的第一步：用公钥私钥对替代弱密码，再配合关闭密码登录、禁止 root 直连，能让服务器的安全性提升一个档次。改配置前务必先确认密钥能正常登录，避免把自己锁在门外。