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

19次阅读

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服务允许公钥认证:

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

Blogcast™

BlogcastTM是一个文本转语音的工具,允许用户创建播客、视频、电子学习课程的音频和音频书籍,而无需录制。

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

查看详情 Linux免密登录配置教学_Linux生成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字段

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

text=ZqhQzanResources