云计算百科
云计算领域专业知识百科平台

SSH原理与实战:密钥认证实现服务器免密登录

文章目录

  • 为啥需要免密登录呢
    • 一、SSH工作原理简述
      • 1. 加密三剑客
      • 2. 连接建立流程
    • 二、关键文件解析
    • 三、两台服务器免密登录实战
      • 环境准备
      • 步骤1:生成密钥对(服务器A)
      • 步骤2:部署公钥到服务器B
      • 步骤3:配置快捷连接(服务器A)
      • 步骤4:测试免密登录
    • 四、安全增强措施
      • 1. 密钥防护
      • 2. 服务器加固
    • 五、常见问题排查
      • 症状:仍要求输入密码
      • 症状:Host key verification failed

为啥需要免密登录呢

免密登录主要是为了方便和提高效率。想象一下你每天都要去一个地方,比如你每天都要进入自己的房间。如果每次进门都需要找钥匙、开锁,会比较麻烦。但如果你有一种方法,比如人脸识别或者指纹识别,门就能自动打开,你就可以直接进去了,这样会节省很多时间和精力。

一、SSH工作原理简述

1. 加密三剑客

  • 对称加密:AES算法加密通信内容(速度快)
  • 非对称加密:RSA/ECDSA算法验证身份(安全性高)
  • 哈希校验:SHA算法确保数据完整性(防篡改)

2. 连接建立流程

  • TCP三次握手建立连接
  • 交换协议版本和加密算法
  • 服务器发送公钥给客户端
  • 生成临时会话密钥
  • 客户端发起认证请求
  • 建立加密通信隧道
  • 二、关键文件解析

    文件路径作用说明推荐权限
    ~/.ssh/known_hosts 存储已验证过的主机公钥指纹 644
    ~/.ssh/authorized_keys 存储允许登录的公钥列表 600
    ~/.ssh/config 客户端连接配置模板 600
    ~/.ssh/id_ed25519 用户的ED25519私钥(绝不可泄露) 600
    ~/.ssh/id_ed25519.pub 用户的ED25519公钥(需要分发) 644

    三、两台服务器免密登录实战

    环境准备

    • 服务器A:跳板机(IP:192.168.1.100)
    • 服务器B:目标机(IP:192.168.1.200)
    • 用户账号:oper

    步骤1:生成密钥对(服务器A)

    # 使用更安全的ED25519算法
    ssh-keygen -t ed25519 -a 100 -C "oper@jumpserver" -f ~/.ssh/cluster_key

    # 生成结果:
    # – cluster_key → 私钥(相当于钥匙)
    # – cluster_key.pub → 公钥(相当于锁芯)

    步骤2:部署公钥到服务器B

    # 方法一:自动部署(需要当前能密码登录)
    ssh-copy-id -i ~/.ssh/cluster_key.pub oper@192.168.1.200

    # 方法二:手动部署(适合无密码登录环境)
    cat ~/.ssh/cluster_key.pub | ssh oper@192.168.1.200 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

    步骤3:配置快捷连接(服务器A)

    vim ~/.ssh/config

    # 添加以下内容
    Host db-server
    HostName 192.168.1.200
    User oper
    Port 22
    IdentityFile ~/.ssh/cluster_key
    StrictHostKeyChecking yes
    ServerAliveInterval 30

    步骤4:测试免密登录

    # 普通方式测试
    ssh -i ~/.ssh/cluster_key oper@192.168.1.200

    # 使用配置别名测试
    ssh db-server

    # 预期结果:直接进入服务器B的终端

    四、安全增强措施

    1. 密钥防护

    # 给私钥加密保护
    ssh-keygen -p -f ~/.ssh/cluster_key

    # 使用ssh-agent管理密钥
    eval $(ssh-agent)
    ssh-add ~/.ssh/cluster_key

    2. 服务器加固

    # 修改SSH配置文件(/etc/ssh/sshd_config)
    PasswordAuthentication no # 禁用密码登录
    PermitRootLogin no # 禁止root登录
    MaxAuthTries 3 # 限制尝试次数
    ClientAliveInterval 300 # 超时自动断开

    五、常见问题排查

    症状:仍要求输入密码

    # 检查三部曲
    1. 服务器B的~/.ssh/authorized_keys权限是否为600
    2. 服务器B的~/.ssh目录权限是否为700
    3. 服务器A的私钥文件权限是否为600

    # SELinux问题处理
    restorecon -Rv ~/.ssh

    症状:Host key verification failed

    # 清除旧指纹
    ssh-keygen -R 192.168.1.200


    知识延伸:ED25519密钥相比传统RSA2048,在相同安全强度下速度快30%,密钥长度缩短50%。推荐作为首选算法。

    通过本文,您已掌握SSH免密登录的核心原理与生产级部署方案。当看到终端秒连服务器的那一刻,就是运维效率质的飞跃!

    关注公众号原宏Cloud运维栈,带你学习更多实用技巧

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » SSH原理与实战:密钥认证实现服务器免密登录
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!