（可选）设置无密码 SSH 登录 
=====================================

本文介绍如何为集群内的多台机器设置无密码 SSH 登录。如果您在单机安装 OceanBase 数据库，则无需设置。

名词解释 
-------------------------

* 中控机器

  存储 OceanBase 数据库安装包和集群配置信息的机器。
  

* 目标机器

  安装 OceanBase 数据库的机器。
  




前提条件 
-------------------------

设置无密码 SSH 登录前，确保您拥有目标机器的 root 用户权限。

操作步骤 
-------------------------

按以下步骤设置无密码 SSH 登录：

1. 在中控机器上运行以下命令查看密钥是否存在：

   ```bash
   ls ~/.ssh/id_rsa.pub
   ```

   

   如果密钥已经存在，则无需生成新的密钥。
   

2. （可选）在中控机器上运行以下命令生成 SSH 公钥和私钥：

   ```bash
   ssh-keygen -t rsa
   ```

   

3. 在中控机器上运行以下命令将第一步生成的公钥上传至目标服务器的 `.ssh` 文件夹：

   ```bash
   scp ~/.ssh/id_rsa.pub root@<server_ip>:~/.ssh/
   ```

   

4. 在目标机器上运行以下命令，将中控机器传入的公钥写到 authorized_keys：

   ```bash
   cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
   ```

   

5. 在中控机器上运行以下命令登录目标机器：

   ```bash
   ssh root@<server_ip>
   ```

   

6. 重复步骤 3-5，为每台机器设置无密码登录 SSH。

   



**注意**

上述命令均仅需在中控机器上执行。

（附录）脚本参考 
-----------------------------

推荐您使用以下脚本，在集群中批量执行命令和复制文件。

* 使用以下脚本，批量复制文件。

  ```bash
  #/usr/bin/bash
  
  
  
  hosts=(
      "ob001"
      "ob002"
      "ob003"
      "obdriver"
      )
      for host in "${hosts[@]}"
      do
  
          echo "begin to scp " $@ " on " $host
          scp -r $1 $host:$2
      done
  ```

  

* 使用以下脚本，批量执行命令。

  ```bash
  /usr/bin/bash
  
  
  
  hosts=(
      "ob001"
      "ob002"
      "ob003"
      "obdriver"
      )
      for host in "${hosts[@]}"
      do
          echo "begin to run " $@ " on " $host
          ssh $host $@
      done
  ```

  



**注意**



您必须将脚本中的 hosts 列表替换成您自己的实际机器列表。
