首批通过分布式安全可靠测评,为关键业务系统打造
(可选)设置无密码 SSH 登录
更新时间:2026-06-15 14:12:43
在部署 OceanBase 集中式版时,如果涉及到跨机器部署,则需要设置无密码 SSH 登录,例如安装 obd 的机器与安装 OceanBase 数据库的机器不在同一台机器,则需要在安装 obd 的机器上设置无密码 SSH 登录。 如果部署的 obd 与 OceanBase 数据库在同一台机器上,则无需设置无密码 SSH 登录。
名词解释
中控机器
安装 obd 的机器,用于管理 OceanBase 集群,存储 OceanBase 集群安装包和集群配置信息。
目标机器
安装 OceanBase 数据库的机器。
操作步骤
在中控机中按以下步骤设置无密码 SSH 登录:
说明
此处需要为所用用户配置免密登录。若计划使用 admin 用户部署 OceanBase 数据库,则需要为目标机器的 admin 用户配置免密。建议使用 admin 用户部署 OceanBase 数据库。
在中控机器上运行以下命令查看密钥是否存在:
[admin@test001 ~]$ ls ~/.ssh/id_rsa.pub如结果显示密钥已经存在,则无需生成新的密钥。
(可选)在中控机器上运行以下命令生成 SSH 公钥和私钥:
[admin@test001 ~]$ ssh-keygen -t rsa将中控机的公钥复制到目标机器的 authorized_keys 文件中:
[admin@test001 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<server_ip>如果中控机与目标机器为同一台机器,可以使用以下命令:
[admin@test001 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(附录)脚本参考
推荐您使用以下脚本,执行以下脚本需要拥有 sudo 权限。
#!/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 替换成您自己的实际机器列表和密码。