怎样在Linux中配置SSH免密登录?ssh-keygen和authorized_keys设置步骤

是这样的,想请教一下,怎样在Linux中配置SSH免密登录?ssh-keygen和authorized_keys设置步骤
最新回答
月

2026-05-19 15:08:41

在Linux中配置SSH免密登录的核心步骤包括生成密钥对、将公钥添加到远程服务器的authorized_keys文件,并验证登录。以下是详细操作指南:

1. 本地生成SSH密钥对

使用ssh-keygen命令生成RSA类型密钥对(4096位增强安全性):

ssh-keygen -t rsa -b 4096
  • 交互提示:

    保存路径:默认~/.ssh/id_rsa,直接回车确认。

    密码(Passphrase):若需完全免密登录,直接回车跳过;否则设置密码(需在每次使用时输入)。

  • 生成结果:

    私钥:~/.ssh/id_rsa(严格保密,禁止泄露)。

    公钥:~/.ssh/id_rsa.pub(需上传至远程服务器)。

2. 将公钥添加到远程服务器的authorized_keys方法一:使用ssh-copy-id(推荐)

自动将公钥追加到远程服务器的~/.ssh/authorized_keys文件:

ssh-copy-id user@remote_host
  • 替换user为远程用户名,remote_host为服务器IP或域名。
  • 首次执行需输入远程用户密码,后续操作自动完成。
方法二:手动复制粘贴
  1. 查看本地公钥内容:cat ~/.ssh/id_rsa.pub
  2. 登录远程服务器:ssh user@remote_host
  3. 编辑或创建authorized_keys文件:

    若文件不存在,先创建.ssh目录并设置权限:mkdir -p ~/.sshchmod 700 ~/.ssh

    将公钥内容追加到文件:echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys

    设置文件权限:chmod 600 ~/.ssh/authorized_keys

3. 验证免密登录

退出当前远程连接后,重新尝试登录:

ssh user@remote_host
  • 成功标志:直接进入远程命令行,无需输入密码。
  • 失败排查:

    公钥未正确写入:检查~/.ssh/authorized_keys内容是否与本地公钥一致。

    权限问题:

    .ssh目录权限必须为700:chmod 700 ~/.ssh

    authorized_keys文件权限必须为600:chmod 600 ~/.ssh/authorized_keys

    SSH服务配置:确保远程服务器的/etc/ssh/sshd_config包含以下配置:PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys修改后重启SSH服务:sudo systemctl restart sshd # 或 service ssh restart

    私钥使用错误:若存在多个密钥,需通过-i指定私钥路径:ssh -i ~/.ssh/id_rsa user@remote_host

关键注意事项
  • 安全性:私钥文件(id_rsa)泄露会导致安全风险,建议设置文件权限为600:chmod 600 ~/.ssh/id_rsa
  • 多密钥管理:若需使用多个密钥,可通过~/.ssh/config文件配置默认密钥或指定不同主机的密钥路径。
  • 日志排查:若仍无法登录,检查远程服务器的SSH日志(通常位于/var/log/auth.log或/var/log/secure)获取详细错误信息。

通过以上步骤,可高效完成SSH免密登录配置,显著提升服务器管理效率。