HCRM博客

如何在CentOS上配置免密登录?

CentOS 系统配置 SSH 免密登录完整指南

在 Linux 系统管理和服务器维护中,频繁输入密码登录 SSH 不仅效率低下,更存在安全风险,配置 SSH 免密登录是提升运维效率与安全性的关键步骤,本文将详细介绍在 CentOS 系统上实现 SSH 密钥对认证的完整流程。


理解免密登录的核心原理

SSH 免密登录并非取消认证,而是采用更安全的非对称加密密钥对代替传统密码:

如何在CentOS上配置免密登录?-图1
  1. 密钥对生成:在本地机器创建一对关联的密钥(私钥 + 公钥)。
  2. 公钥部署:将公钥上传至目标 CentOS 服务器的指定文件(~/.ssh/authorized_keys)。
  3. 认证过程
    • 连接时,服务器生成随机数并用公钥加密,发送给客户端。
    • 客户端用私钥解密,将结果发回服务器。
    • 服务器验证结果匹配则允许登录,无需输入密码。

此方式比密码更安全(避免暴力破解),且显著提升操作便捷性。


本地生成 SSH 密钥对

操作在您日常使用的客户端机器(如个人电脑、跳板机)执行:

  1. 打开终端

    • Linux/macOS:直接使用 Terminal。
    • Windows:使用 PowerShell 或安装了 openSSH 的终端。
  2. 执行密钥生成命令

    • ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # -C 注释可选,标识密钥
    • -t rsa:指定密钥类型为 RSA(推荐)。
    • -b 4096:指定密钥长度 4096 位(更安全)。
    • -C:添加注释,方便识别密钥用途。
  3. 指定保存路径与密码(按提示操作):

    • Enter file in which to save the key (/home/youruser/.ssh/id_rsa): # 直接回车使用默认路径
    • Enter passphrase (empty for no passphrase): # 强烈建议设置私钥密码!增强安全性
    • Enter same passphrase again: # 再次输入密码确认

    关键提示:为私钥设置强密码至关重要,即使私钥文件泄露,密码也能提供额外保护。

    如何在CentOS上配置免密登录?-图2
  4. 生成成功: 默认在 ~/.ssh/ 目录生成两个文件:

    • id_rsa私钥文件(必须严格保密,权限应为 600)。
    • id_rsa.pub公钥文件(可安全分发到目标服务器)。

上传公钥至 CentOS 服务器

将本地生成的公钥(id_rsa.pub添加到目标服务器的 ~/.ssh/authorized_keys 文件。

使用 ssh-copy-id(最推荐,最简单)

  1. 在本地客户端终端执行:

    • ssh-copy-id -i ~/.ssh/id_rsa.pub username@centos_server_ip
    • -i ~/.ssh/id_rsa.pub:指定要上传的公钥文件路径(如果默认是 id_rsa.pub 可省略)。
    • username:您在 CentOS 服务器上的有效用户名。
    • centos_server_ip:服务器的 IP 地址或域名。
  2. 输入密码:首次操作需要输入该用户在 CentOS 服务器上的登录密码,成功后,公钥会自动添加到服务器用户家目录下的 ~/.ssh/authorized_keys 文件中(如文件不存在会自动创建)。

手动复制粘贴(备用方法)

如何在CentOS上配置免密登录?-图3
  1. 在本地查看公钥内容

    • cat ~/.ssh/id_rsa.pub

    复制输出的全部文本内容(以 ssh-rsa AAAAB3Nza... 开头)。

  2. 登录到 CentOS 服务器

    • ssh username@centos_server_ip
  3. 创建或编辑 authorized_keys 文件

    • mkdir -p ~/.ssh # 确保 .ssh 目录存在,-p 参数忽略已存在错误
    • chmod 700 ~/.ssh # 设置 .ssh 目录权限为 700 (rwx------)
    • touch ~/.ssh/authorized_keys # 创建文件(如果不存在)
    • chmod 600 ~/.ssh/authorized_keys # 设置文件权限为 600 (rw-------)
    • nano ~/.ssh/authorized_keys # 使用 nano 编辑器打开文件
    • 将复制的公钥内容完整粘贴到文件末尾(确保没有多余空格或换行)。
    • 保存并退出编辑器(在 nano 中:Ctrl+O 保存,Enter 确认,Ctrl+X 退出)。

关键权限设置(避免失败的关键)

CentOS 的 SSH 服务 (sshd) 对目录和文件权限有严格要求,权限配置错误是导致免密登录失败的常见原因:

  • 服务器端 (~/.ssh 及文件):

    • 用户家目录 (): 权限不应是 777 (宽松权限),推荐 755 (drwxr-xr-x) 或更严格。
    • .ssh 目录:权限必须是 700 (drwx------)。
    • authorized_keys 文件:权限必须是 600 (-rw-------)。

    使用命令检查并修正:

    • chmod 700 ~/.ssh
    • chmod 600 ~/.ssh/authorized_keys
  • 客户端 (私钥文件):

    • 私钥文件 (~/.ssh/id_rsa):权限必须是 600 (-rw-------)。
      • chmod 600 ~/.ssh/id_rsa

验证免密登录配置

完成以上步骤后,尝试从本地客户端连接到 CentOS 服务器:

  • ssh username@centos_server_ip
  • 成功表现:系统会提示您输入私钥的密码(如果您在第 2 步设置了私钥密码),而不是服务器用户的登录密码,输入私钥密码后即可直接登录。
  • 失败排查
    • 检查步骤是否遗漏。
    • 仔细核对服务器端 .ssh 目录和 authorized_keys 文件的权限(步骤四)。
    • 使用 ssh -v username@centos_server_ip 开启详细模式,查看连接过程中的调试信息,定位问题点。
    • 检查服务器 /var/log/secure 日志(可能需要 sudo 权限),查找与 SSH 认证相关的错误信息。

进阶配置与安全建议

  1. 管理多服务器密钥

    • 使用 ssh-agent 管理私钥密码,避免每次连接重复输入:

      • eval $(ssh-agent) # 启动 agent
      • ssh-add ~/.ssh/id_rsa # 添加私钥并输入密码 (后续连接无需再输)
    • ~/.ssh/config 文件中配置不同服务器使用不同密钥:

      • Host server-alias1
      • HostName server1_ip
      • User username1
      • IdentityFile ~/.ssh/id_rsa_for_server1
      • Host server-alias2
      • HostName server2_ip
      • User username2
      • IdentityFile ~/.ssh/id_rsa_for_server2

      之后即可使用 ssh server-alias1 连接。

  2. 增强服务器安全(强烈推荐): 一旦确认密钥登录正常,应禁用密码登录,防止暴力破解:

    • 编辑服务器 SSH 配置文件:
      • sudo nano /etc/ssh/sshd_config
    • 修改或添加以下配置项:
      • PasswordAuthentication no # 禁用密码认证
      • PermitEmptyPasswords no # 禁止空密码
      • ChallengeResponseAuthentication no # 通常也禁用
    • 保存文件后重启 SSH 服务:
      • sudo systemctl restart sshd # CentOS 7/8/9 使用 systemctl
      • # 或 sudo service sshd restart # 旧版本 CentOS

      重要警告:在禁用密码登录前,务必确保您的公钥已正确添加且能免密登录!否则可能永久失去服务器访问权限。

  3. 私钥安全

    • 绝不分享私钥 (id_rsa)。
    • 为私钥设置强密码。
    • 将私钥文件存储在安全位置。
    • 考虑使用硬件安全密钥存储私钥。

掌握 SSH 免密登录是高效管理 CentOS 服务器的必备技能,遵循上述步骤仔细操作,并实施安全加固建议,能显著提升工作效率并保障系统安全,密钥管理看似简单,实则是现代服务器安全防护的第一道坚实防线。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/38373.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~