部署TiDB集群出现ssh报错信息

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

  • 【TiDB 版本】:v5.2.1
  • 【问题描述】:Error: executor.ssh.execute_failed: Failed to execute command over SSH for ‘tidb@192.168.8.17:22’ {ssh_stderr: , ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin /usr/bin/sudo -H bash -c “test -d /tidb-deploy || (mkdir -p /tidb-deploy && chown tidb:$(id -g -n tidb) /tidb-deploy)”}, cause: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

topology.yaml (634 字节)
tiup-cluster-debug-2022-03-16-17-03-14.log (316.6 KB)

2 个赞

建议看下这个这个,应该能解决你的问题
https://asktug.com/t/topic/95777

1 个赞

在你tiup的主机的tidb用户下执行
[tidb@localhost .tiup]$ ssh-keygen ##一路回车即可生成密钥对注意是在tidb用户下执行

[tidb@localhost .tiup]$ ls /home/tidb/.ssh/* ##以下就是生成的公钥和私钥

/home/tidb/.ssh/id_rsa /home/tidb/.ssh/id_rsa.pub

[tidb@localhost .tiup]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.135.148 ##建立对192.168.135.148 主机的免密登录 这里需要免密登录哪台机器就填写哪台机器的ip地址即可

1 个赞

之后你可以直接在tidb用户下ssh 你要部署tidb的节点看一下是否可以免密登录

1 个赞

我已经配好免密登录了,部署的时候只有主机不成功

你看一下报错 他是远程的tidb@192.168.8.17 所以你要配置tidb用户的免密访问,另外你要确认一下在安装机上的tidb用户下 ssh其他节点的tidb用户都是免密的 你再试试

必须每台服务器都新建一个tidb用户吗,我直接都用root用户不行吗

如果使用tidb用户的话就要每台机器的建一个
如果你想使用root用户你可以试一下,在root用户下执行
tiup cluster deploy tidb-jiantest v5.4.0 ./topology.yaml --user root

这个命令是个例子 集群名字和版本 还有配置文件的名字你自己修改一下

https://asktug.com/t/topic/95777
这个帖子可能可以解决你的问题~
快去看一下·

问题解决了么

我大概明白了,我先自己试试

我现在都用的tidb用户,互信免密也配置好了,还是部署失败

192.168.8.17 上边tidb用户的sudo 权限配了么
[root@localhost ~]# visudo

tidb ALL=(ALL) NOPASSWD: ALL

配置了

我重启了下服务器又报最开始的错了

ssh免密互信我是跟着这个技术文档配置的

有人吗

su - tidb
ssh tidb@192.168.8.17 “sudo -l;sudo mkdir /testdir”

你执行一下,还有我看你的截图是在root下边
你要是–user tidb 你就去tidb用户下执行deploy --user 你就去root用户下执行deploy

现在有两种方式
第一:用tiup自动去创建部署的用户,对权限没啥要求,我建议用这个方法,参考这个 使用 TiUP 部署 TiDB 集群 | PingCAP Docs
在命令后面加 --user root -p,tiup会自动在所有节点创建拓扑文件中填写的用户并授权
第二,手动创建ssh互信: TiDB 环境与系统配置检查 | PingCAP Docs
这种就很容易出现各种权限问题了,要逐一排查,每个节点都要去单独设置用户和赋权

2 个赞

我已经自己解决啦,谢谢

好的 解决了就好

您好,麻烦能分享下怎么解决的吗