如何配置Linux用户的SSH密钥登录?authorized_keys设置方法

如何配置Linux用户的SSH密钥登录?authorized_keys设置方法
最新回答
云散风尽独留

2021-03-25 21:25:51

配置Linux用户的SSH密钥登录并通过authorized_keys实现免密登录,需按以下步骤操作:

1. 生成SSH密钥对(本地操作)

在本地终端(Mac/Linux)执行命令生成密钥:

ssh-keygen -t rsa -b 4096
  • 保存路径:默认路径为~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥),直接回车确认。
  • 设置密码(可选):输入passphrase可增强安全性,留空则无密码。
  • 生成结果

    id_rsa:私钥文件,必须严格保密

    id_rsa.pub:公钥文件,需上传至服务器。

2. 将公钥上传至服务器方法一:使用ssh-copy-id(推荐)ssh-copy-id user@server_ip
  • 参数说明

    user:服务器用户名。

    server_ip:服务器IP地址。

  • 作用:自动将公钥添加到服务器的~/.ssh/authorized_keys文件中。
方法二:手动复制公钥

若ssh-copy-id不可用,执行以下命令:

cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  • 步骤解析

    通过管道将本地公钥内容传输至服务器。

    在服务器上创建~/.ssh目录(若不存在)。

    将公钥追加到authorized_keys文件中。

3. 设置服务器端权限

SSH对权限要求严格,需确保以下设置:

  • .ssh目录权限

    chmod 700 ~/.ssh
  • authorized_keys文件权限

    chmod 600 ~/.ssh/authorized_keys
  • 用户主目录权限

    chmod go-w ~

    说明:主目录不能对其他用户开放写权限,否则密钥可能失效。

  • 验证权限问题:若登录失败,使用-v参数调试:

    ssh -v user@server_ip

4. 禁用密码登录(可选但推荐)

确认密钥登录正常后,关闭密码验证以提升安全性:

  1. 编辑SSH配置文件:sudo nano /etc/ssh/sshd_config
  2. 修改以下参数:PasswordAuthentication noChallengeResponseAuthentication noUsePAM no
  3. 重启SSH服务:sudo systemctl restart sshd

    ⚠️ 警告:操作前需确保至少有一个密钥登录方式可用,否则可能被锁在服务器外。

关键注意事项
  • 私钥保密:id_rsa文件泄露会导致服务器被非法访问。
  • 权限严格性:.ssh目录、authorized_keys文件及主目录权限错误是常见失败原因。
  • 备份密钥:建议备份私钥至安全位置,避免丢失后无法登录。
  • 多密钥管理:若需多个密钥,可在authorized_keys文件中追加多个公钥,每行一个。

通过以上步骤,可实现安全、高效的SSH密钥登录,替代传统密码验证,显著提升服务器安全性。