SSH无密码登录是在系统安装完成、网络连通且SSH服务启用后的后续配置步骤,核心是在目标服务器上部署管理机生成的公钥,并确保sshd_config中启用PubkeyAuthentication、禁用PasswordAuthentication。

服务器系统安装完成后,配置无密码 SSH 登录不是安装阶段的操作,而是在系统首次启动、网络连通、SSH 服务启用后的后续配置步骤。核心是**在目标服务器上部署客户端的公钥**,并确保服务端 SSH 配置允许密钥认证。整个过程不依赖重装系统,也不修改安装介质。
确认 SSH 服务已就绪
刚完成安装的 Linux 服务器(如 CentOS、Ubuntu、Debian),通常默认已启用 OpenSSH 服务,但需验证:
- 运行 systemctl is-active sshd(CentOS/RHEL)或 systemctl is-active ssh(Ubuntu/Debian),返回 active 表示服务运行中
- 检查监听状态:ss -tnlp | grep :22,确认有进程绑定 22 端口
- 若未启用,执行 sudo systemctl enable --now sshd(或 ssh)
在管理机生成密钥对(非服务器本身)
无密码登录的本质是“从你的操作终端(笔记本、跳板机)安全连接服务器”,所以密钥应在你日常使用的管理机上生成:
- 执行 ssh-keygen -t ed25519 -C "admin@workstation"(推荐 ed25519,比 RSA 更快更安全)
- 直接回车使用默认路径 ~/.ssh/id_ed25519 和空密码(免密登录必须留空)
- 生成后,~/.ssh/id_ed25519.pub 就是待分发的公钥
将公钥复制到新服务器
有三种常用方式,按推荐顺序排列:
- ssh-copy-id(最简单):在管理机运行 ssh-copy-id user@server_ip,输入一次密码即可自动完成公钥上传、创建 ~/.ssh 目录、写入 authorized_keys 并设好权限
- 手动追加(适合无 ssh-copy-id 的环境):先用密码登录服务器 → 执行 mkdir -p ~/.ssh && chmod 700 ~/.ssh → 在管理机用 cat ~/.ssh/id_ed25519.pub | ssh user@server_ip "cat >> ~/.ssh/authorized_keys" → 再执行 chmod 600 ~/.ssh/authorized_keys
- 安装时预置(仅限部分发行版支持):如 Ubuntu Server 安装过程中可粘贴公钥到“SSH identity”字段,系统会自动写入 root 或指定用户的 authorized_keys;但这属于安装选项,不属于“安装后配置”范畴
验证并加固配置
完成复制后,别急着关终端,做两件事:
- 测试登录:在管理机运行 ssh -o PreferredAuthentications=publickey user@server_ip,成功即进系统且无密码提示
-
禁用密码登录(可选但强烈建议):编辑服务器上的 /etc/ssh/sshd_config,确认以下三行已设置并取消注释:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password(若用 root,避免密码直登)
修改后运行 sudo systemctl restart sshd











