[root@kubeapi ~]# sudo /usr/bin/heketi --config=/etc/heketi/heketi.json
Heketi v7.0.0
ssh: unhandled key typeUnable to get keyfile
[cmdexec] ERROR 2025/03/20 11:04:09 /src/github.com/heketi/heketi/executors/sshexec/sshexec.go:124: Unable to read private key file
[heketi] ERROR 2025/03/20 11:04:09 /src/github.com/heketi/heketi/apps/glusterfs/app.go:114: Unable to read private key file
ERROR: Unable to start application
在启动 Heketi服务时报错 SSH私钥无法读取的问题
根据错误信息 Unable to read private key file 和 unhandled key type,问题集中在 SSH 私钥文件的格式或权限上。
1、确认私钥路径和权限
Heketi 配置中指定的私钥路径为 /root/.ssh/id_rsa
,需要确保:
# 检查私钥是否存在
ls -l /root/.ssh/id_rsa# 修改权限(必须为 600)
sudo chmod 600 /root/.ssh/id_rsa# 检查所有权(如果 Heketi 以非 root 用户运行,需确保用户有访问权限)
sudo chown root:root /root/.ssh/id_rsa
2、修复私钥格式问题
Heketi 的 SSH 执行器可能不支持 OpenSSH 的新私钥格式(如以 BEGIN OPENSSH PRIVATE KEY
开头的密钥)。需要将私钥转换为 传统 PEM 格式:
# 检查私钥格式
head -n 1 /root/.ssh/id_rsa# 如果显示 "BEGIN OPENSSH PRIVATE KEY",执行转换:
sudo ssh-keygen -p -m PEM -f /root/.ssh/id_rsa# 检查私钥格式
head-n1/root/.ssh/id_rsa# 如果显示“开始OPENSSH PRIVATE KEY”,执行转换:
sudossh-keygen-p-m PEM-f/root/.ssh/id_rsa
输入旧密码(如果没有密码直接回车)。
转换后确认密钥头变为 -----BEGIN RSA PRIVATE KEY-----
3、验证 SSH 配置
确保 Heketi 服务器能通过私钥连接到 GlusterFS 节点:
# 手动测试 SSH 连接
ssh -i /root/.ssh/id_rsa root@master02
如果连接失败:
确认 GlusterFS 节点的 /root/.ssh/authorized_keys
包含公钥 id_rsa.pub
检查 GlusterFS 节点的 SSH 服务是否允许 root 登录(/etc/ssh/sshd_config)
PermitRootLogin yes
PubkeyAuthentication yes
重启 SSH 服务:
systemctl restart sshd
4、修改 Heketi 配置文件(可选检查)
如果 GlusterFS 节点使用非默认 SSH 端口(如 2222),需在配置中指定端口:
"sshexec": {"keyfile": "/root/.ssh/id_rsa","user": "root","port": "2222" // 添加此行
}
5、重启 Heketi 服务
sudo systemctl restart heketi
sudo systemctl status heketi