Linux免密登录配置教学_Linux生成SSH密钥对方法

11次阅读

Linux 免密登录依赖 SSH 密钥对认证,需本地生成 ed25519 密钥对、将公钥用 ssh-copy-id 部署至服务器~/.ssh/authorized_keys,并确保服务端启用 PubkeyAuthentication 及权限正确(私钥 600、目录 700)。

Linux 免密登录配置教学_Linux 生成 SSH 密钥对方法

Linux 免密登录靠的是 SSH 密钥对认证,核心是本地生成密钥对,再把公钥传到目标服务器的 ~/.ssh/authorized_keys 里。只要私钥安全、权限设置正确,就能跳过密码直接登录。

生成 SSH 密钥对(推荐 ed25519)

在你自己的 电脑(或跳板机)上执行:

ssh-keygen -t ed25519 -C "your_email@example.com"

回车接受默认路径(~/.ssh/id_ed25519),可选设个密钥口令(为空则完全免密,设了需输一次口令解锁私钥)。完成后会生成两个文件:

  • id_ed25519:私钥(绝不能泄露,权限应为 600)
  • id_ed25519.pub:公钥(可公开,要传到服务器)

把公钥复制到远程服务器

最简单安全的方式是用ssh-copy-id(无需手动处理权限):

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip

它会自动创建 ~/.ssh 目录、写入 authorized_keys,并设好权限(~/.ssh 为 700,authorized_keys为 600)。如果提示命令未找到,可手动复制公钥内容,粘贴进服务器的 ~/.ssh/authorized_keys 末尾(确保换行结尾)。

检查并启用密钥登录(服务端配置)

登录服务器后,确认 SSH 服务允许公钥认证:

sudo grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config

正常应看到:

  • PubkeyAuthentication yes
  • AuthorizedKeysFile .ssh/authorized_keys

如有修改,运行 sudo systemctl restart sshd 重载配置。注意:别关掉密码登录,直到确认密钥能成功登录后再禁用(改PasswordAuthentication no)。

测试与排错要点

本地终端运行:ssh -i ~/.ssh/id_ed25519 user@server_ip(显式指定私钥)

  • 报“Permission denied (publickey)”:检查服务器 ~/.ssh/authorized_keys 内容是否完整、有无多余空格;确认该文件属主是当前用户且权限为 600
  • 报“Connection closed by remote host”:可能是 sshd_configStrictModes yes导致,检查 ~/.ssh 和家目录权限(家目录不能是 777 或含组 / 其他写权限)
  • 想省略 -i 参数:把私钥加到 ~/.ssh/config 中,配 IdentityFile 字段

基本上就这些。不复杂但容易忽略权限和路径细节。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-23发表,共计1228字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources