---
title: "（可选）设置无密码 SSH 登录 | OceanBase 文档中心"
description: （可选）设置无密码 SSH 登录 在部署 OceanBase 集中式版时，如果涉及到跨机器部署，则需要设置无密码 SSH 登录，例如安装 obd 的机器与安装 OceanBase 数据库的机器不在同一台机器，则需要在安装 obd 的机器上设置无密码 SSH 登录。 如果部署的 obd 与 OceanBase 数据库在…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库集中式版 - V 4.2.5

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

更新时间：2026-06-15 14:12:43

[编辑](https://github.com/oceanbase/oceanbase-database-standalone/edit/V4.2.5/zh-CN/400.deploy/500.environment-and-configuration-checks/200.use-ssh-to-log-on-without-password.md)  

在部署 OceanBase 集中式版时，如果涉及到跨机器部署，则需要设置无密码 SSH 登录，例如安装 obd 的机器与安装 OceanBase 数据库的机器不在同一台机器，则需要在安装 obd 的机器上设置无密码 SSH 登录。 如果部署的 obd 与 OceanBase 数据库在同一台机器上，则无需设置无密码 SSH 登录。

## 名词解释

- 中控机器

  安装 obd 的机器，用于管理 OceanBase 集群，存储 OceanBase 集群安装包和集群配置信息。
 - 目标机器

  安装 OceanBase 数据库的机器。

## 操作步骤

在中控机中按以下步骤设置无密码 SSH 登录：

#### 说明

此处需要为所用用户配置免密登录。若计划使用 admin 用户部署 OceanBase 数据库，则需要为目标机器的 admin 用户配置免密。建议使用 admin 用户部署 OceanBase 数据库。

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

   ```shell
   [admin@test001 ~]$ ls ~/.ssh/id_rsa.pub

   ```

   如结果显示密钥已经存在，则无需生成新的密钥。
 2. （可选）在中控机器上运行以下命令生成 SSH 公钥和私钥：

   ```shell
   [admin@test001 ~]$ ssh-keygen -t rsa

   ```
 3. 将中控机的公钥复制到目标机器的 authorized_keys 文件中：

   ```shell
   [admin@test001 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<server_ip>

   ```

   如果中控机与目标机器为同一台机器，可以使用以下命令：

   ```shell
   [admin@test001 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

   ```

### （附录）脚本参考

推荐您使用以下脚本，执行以下脚本需要拥有 sudo 权限。

```shell
#!/usr/bin/bash

SERVERS=("<user>@<server_ip1>" "<user>@<server_ip2>" "<user>@<server_ip3>")
PASSWORD="******"
keygen() {
sudo yum -y install expect
expect -c "
   spawn ssh-keygen -t rsa
   expect {
      *(~/.ssh/id_rsa):* { send -- \r;exp_continue}
      *(y/n)* { send -- y\r;exp_continue}
      *Enter* { send -- \r;exp_continue}
      *(y/n)* { send -- y\r;exp_continue}
      *Enter* { send -- \r;exp_continue}
      eof {exit 0}
   }
   expect eof
"
}
copy(){
expect -c "
   set timeout -1
   spawn ssh-copy-id $1
   expect {
      *(yes/no)* { send -- yes\r; exp_continue }
      *password:* { send -- $PASSWORD\r; exp_continue}
      eof {exit 0}
   }
   expect eof
"
}
ssh_copy_id_to_all(){
keygen ;
for host in ${SERVERS[@]}
do
      copy $host
done
}
ssh_copy_id_to_all

```

#### 注意

您必须将脚本前两行的 **SERVERS** 列表和 **PASSWORD** 替换成您自己的实际机器列表和密码。

  上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
