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

文章目录

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

为啥需要免密登录呢

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

一、SSH工作原理简述

1. 加密三剑客

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

2. 连接建立流程

  1. TCP三次握手建立连接
  2. 交换协议版本和加密算法
  3. 服务器发送公钥给客户端
  4. 生成临时会话密钥
  5. 客户端发起认证请求
  6. 建立加密通信隧道

二、关键文件解析

文件路径 作用说明 推荐权限
~/.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 [email protected]

# 方法二:手动部署(适合无密码登录环境)
cat ~/.ssh/cluster_key.pub | ssh [email protected] "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 [email protected]

# 使用配置别名测试
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运维栈,带你学习更多实用技巧

你可能感兴趣的:(ssh,服务器,运维)