集群ssh免密配置
时间: 2025-05-30 20:43:02 浏览: 16
### 配置集群 SSH 免密登录
#### 1. 准备工作
在配置集群中的 SSH 免密登录之前,需要确保每台机器都已经安装了 OpenSSH 客户端和服务端软件。可以通过以下命令验证是否已安装:
```bash
ssh -V
```
如果未安装,则可以在基于 Debian 的系统中通过 `apt-get install openssh-client` 和 `apt-get install openssh-server` 进行安装,在基于 RedHat 的系统中则使用 `yum install openssh-clients` 和 `yum install openssh-server`。
---
#### 2. 创建公私钥对
在每台服务器上生成一对 RSA 密钥(公钥和私钥)。假设当前用户的家目录为 `/home/haha1`,执行如下命令来创建 `.ssh` 文件夹以及生成密钥对:
```bash
cd /home/haha1 && mkdir ~/.ssh && chmod 700 ~/.ssh
ssh-keygen -t rsa
```
此过程会提示输入文件名存储位置,默认为 `~/.ssh/id_rsa`;接着设置密码短语(可留空以跳过),最后生成两个文件:`id_rsa`(私钥) 和 `id_rsa.pub`(公钥)[^1]。
---
#### 3. 设置本地免密登录
为了测试单机环境下的无密码认证机制正常运作,需将自身的公钥复制至 authorized_keys 中:
```bash
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
上述指令把 id_rsa.pub 内容追加到 authorized_keys 文件里,并调整权限防止其他用户读取敏感数据[^2]。
---
#### 4. 将各节点的公钥分发给所有节点
对于分布式计算框架如 Hadoop 来说,通常会有多个物理或者虚拟节点组成一个逻辑上的整体运算单元。为了让这些成员之间能够互相无障碍通信而无需每次都提供身份凭证,必须让每一个参与方知晓彼此的身份标识即交换各自的 public keys.
具体做法是从 master 节点开始收集 slave(s) 上面产生的 pubic key 并集中管理再广播回去:
```bash
for node in $(cat nodes_list); do scp ~/.ssh/id_rsa.pub ${node}:~/; done
```
这里假定有一个名为nodes_list 的文本档列出了所有目标主机地址列表。之后进入任一子节点合并收到的新key 到统一集合当中去:
```bash
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys && rm ~/id_rsa.pub
```
重复以上动作直至覆盖整个网络范围内的全部设备为止[^3].
---
#### 5. 解决可能遇到的问题
即使完成了前面提到的各项准备工作,实际运行过程中仍可能出现某些异常状况比如连接超时等问题。“ssh_exchange_identification: read: Connection reset by peer”的错误可能是由于频繁失败尝试致使远程站点暂时封锁IP 地址所致。此时应该检查 `/etc/sshd.deny.hostguard` 或者相似命名模式的日志文档寻找对应条目加以移除后再重试链接请求[^4]:
```bash
nano /etc/sshd.deny.hostguard
# 找到对应的 IP 删除后保存退出
service sshd restart
```
---
### 总结
完成上述步骤后,理论上就可以实现在指定范围内任何两点间的无缝切换操作而不必担心繁琐的手动验证流程干扰正常使用体验了。
阅读全文
相关推荐

















