服务器间互信配置
-
-
- **一、SSH互信配置步骤(以A免密登录B为例)**
-
- **1. 在客户端(A)生成密钥对**
- **2. 将公钥上传到服务端(B)**
- **3. 验证免密登录**
- **4. 批量配置(适用于集群)**
- **二、底层实现原理**
-
- **1. 非对称加密体系**
- **2. SSH认证流程**
- **3. 关键文件权限**
- **三、安全增强措施**
-
- **1. 限制SSH访问**
- **2. 使用证书颁发机构(CA)**
- **3. 端口敲门(Port Knocking)**
- **四、常见问题排查**
-
- **1. 连接失败:权限过宽**
- **2. 认证被拒绝**
- **3. 算法不兼容**
- **五、扩展应用场景**
-
- **1. 通过SSH执行远程命令**
- **2. 端口转发**
- **3. 结合Ansible自动化**
- **总结**
-
服务器间互信配置(通常指SSH免密登录)是分布式系统、集群管理和自动化运维的基础。以下是详细配置步骤和底层实现原理分析:
一、SSH互信配置步骤(以A免密登录B为例)
1. 在客户端(A)生成密钥对
ssh-keygen -t rsa -b 4096 -C "A@host" # -t指定算法,-b指定长度
生成的文件默认存储在: • 私钥:~/.ssh/id_rsa(权限必须为600) • 公钥:~/.ssh/id_rsa.pub
2. 将公钥上传到服务端(B)
ssh-copy-id -i ~/.ssh/id_rsa.pub user@B_IP
或手动追加公钥到B的授权文件:
cat ~/.ssh/id_rsa.pub | ssh user@B_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
3. 验证免密登录
ssh user@B_IP # 无需输入密码直接登录
4. 批量配置(适用于集群)
使用循环为多台服务器配置互信:
for node in node1 node2 node3; do
ssh-copy-id user@$node
done
二、底层实现原理
1. 非对称加密体系
• 密钥对作用: • 私钥(Private Key):客户端持有,永远不传输,用于解密或签名。 • 公钥(Public Key):上传到服务端,用于加密或验证签名。
2. SSH认证流程
3. 关键文件权限
~/.ssh/ | 700 | 确保目录仅属主可访问 |
~/.ssh/id_rsa | 600 | 保护私钥不被泄露 |
~/.ssh/authorized_keys | 600 | 防止他人篡改授权密钥 |
三、安全增强措施
1. 限制SSH访问
在服务端(B)的/etc/ssh/sshd_config中配置:
PermitRootLogin no # 禁止root登录
PasswordAuthentication no # 禁用密码认证
AllowUsers user1 user2 # 只允许特定用户
2. 使用证书颁发机构(CA)
适用于大规模集群:
TrustedUserCAKeys /etc/ssh/ca_key.pub
3. 端口敲门(Port Knocking)
隐藏SSH端口:
# 示例:依次访问端口1000,2000,3000才会开放22端口
knockd -d -i eth0 -c /etc/knockd.conf
四、常见问题排查
1. 连接失败:权限过宽
Error: Bad owner or permissions on ~/.ssh/authorized_keys
解决:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
2. 认证被拒绝
Permission denied (publickey)
检查步骤:
3. 算法不兼容
no matching key exchange method found
解决:在客户端~/.ssh/config中指定算法:
Host *
KexAlgorithms diffie-hellman-group-exchange-sha256
五、扩展应用场景
1. 通过SSH执行远程命令
ssh user@B_IP "ls -l /tmp" # 单命令
ssh user@B_IP <<'EOF' # 多命令
df -h
free -m
EOF
2. 端口转发
ssh -L 8080:B_IP:80 user@B_IP # 本地端口转发
ssh -R 3306:localhost:3306 user@B_IP # 远程端口转发
3. 结合Ansible自动化
在/etc/ansible/hosts中定义主机组:
[web]
node1 ansible_ssh_user=user
node2 ansible_ssh_user=user
总结
• 核心原理:非对称加密 + 挑战响应机制。 • 安全关键:私钥保护、最小权限原则、服务端严格配置。 • 性能优化:会话复用(ControlMaster配置)可减少连接建立开销。
通过合理配置SSH互信,可实现安全高效的服务器管理,为分布式系统提供基础认证保障。
评论前必须登录!
注册