tiup部署的时候总提示 unable to authenticate, attempted methods [none publickey]

我用root安装的tiup 执行tiup cluster deploy tidb-test v3.0.12 ./topology.yaml --user tidb 输入密码以后提示

    + Initialize target host environments
     - Prepare 10.3.87.221:22 ... Error
     - Prepare 10.3.87.202:22 ... Error
     - Prepare 10.3.87.34:22 ... Done

    Error: executor.ssh.execute_failed: Failed to execute command over SSH for 'tidb@10.3.87.221:22' {ssh_stderr: , ssh_stdout: , ssh_command: PATH=$PATH:/usr/bin:/usr/sbin sudo -
    H -u root bash -c "mkdir -p {/tidb/deploy,/tidb/data}"}, cause: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
    Verbose debug logs has been written to /tidb/app/tiup-cluster-debug-2020-04-10-09-12-07.log.
    Error: start `/root/.tiup/components/cluster/v0.4.6/cluster` (wd:/root/.tiup/data/RviL6DA) failed: exit status 1

我已经试过了ssh tidb@10.3.87.221 然后输入密码是可以正常登录的。而且我三台机器的密码是一样的

ssh tidb@10.3.87.34也是输入密码就可以登录了。不知道是那里的问题

如果我在221上用tidb用户ssh-keygen 然后

ssh-copy-id tidb@10.3.87.221

ssh-copy-id tidb@10.3.87.202

ssh-copy-id tidb@10.3.87.34

运行的时候加了 -i -i /tidb/app/.ssh/id_rsa

+ Initialize target host environments
  - Prepare 10.3.87.221:22 ... Error
  - Prepare 10.3.87.202:22 ... Error
  - Prepare 10.3.87.34:22 ... Done


    Error: Failed to initialize TiDB environment on remote host '10.3.87.221' (task.env_init.failed)
      caused by: Failed to create new system user 'tidb' on remote host
        caused by: Failed to execute command over SSH for 'tidb@10.3.87.221:22'
          caused by: ssh: handshake failed: ssh: unable to authenticate, attempted methods [publickey none], no supported methods remain

就提示上面的错误

1 确认 tidb 用户配置了 sudo 免密码权限

2 确认报错机器上的 /etc/ssh/sshd_config 配置与正常机器的配置一致

3 执行 ssh -v tidb@xxx 确认当前支持的所有认证方式

/etc/ssh/sshd_config

我对比了正常机和错误机的文件是一样的

ssh -v tidb@xxx

我也对比了正常机和错误机的输出,也是一样的

tidb sudo 也确定是免密的

而且我发现执行命令以后。我用交互命令输入密码,它确实在三台机器上面都生成了/tidb/app/.ssh/authorized_keys这个文件

上面用 tidb 用户在 221 上配置了 ssh 互信,确认 221 切换到 tidb 用户后能否免密登录到其他机器。

需要手动设置互信嘛?

不知道啊。

我以tidb登录,手动的ssh-keygen

ssh-copy-id 10.3.87.221

ssh-copy-id 10.3.87.202

ssh-copy-id 10.3.87.34

试了一下 ssh 到其他的机器上 只有34可以免密。其他的都要输入密码

我也反复确认了一下/etc/ssh/sshd_config文件内容是一样的啊

home

.ssh

.ssh/authorized_keys

目录和文件的权限都是一样的啊

其他的需要输入密码,说明 ssh 互信没有配置正确,参考文档重新配置一下

是啊。但我文件权限是一样的。sshd_config配置也是一样的。不知道有那个部分造成这个错误

我也是参照了很多网上的文章。就是不成功

可以免密的是centos 7.6

不能免密的是centos 7.7

可以将 topology.yaml 的 user 指定为另一个用户试试

当执行 deploy --user user_a -i 或者 password 连到目标机器时,user_a 会通过 ssh -i 或者密码登陆目标机器 ,然后创建 user_b 用户 user_b sudo 权限。

其中 user_a 为 --user 指定的部署用户,有 sudo 权限 和 ssh 权限; user_b 为 topology.yaml 配置的部署用户。

我刚把root进行了免密成功了 –user 指定为root topology.yaml中的user还是用的tidb

Error: executor.ssh.execute_failed: Failed to execute command over SSH for 'tidb@10.3.87.221:22' {ssh_stderr: , ssh_stdout: , ssh_command: PATH=$PATH:/usr/bin:/usr/sbin sudo -
H -u root bash -c "mkdir -p {/tidb/deploy,/tidb/data}"}, cause: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

还是提示上面的错误

如果将topology.yaml中的用户换成root就可以成功了

但服务启动不成功

服务启动报错检查下相关日志

1 登录到报错的节点上,检查服务状态是否正常,如果不正常,检查系统日志 /var/log/messsage

2 报错节点的 deploy_dir/log 目录下,检查相关组件日志是否有报错

SELinux

firewall

都需要关掉 不然就会出现普通用户明明已经免密了。在ssh的时候还是提示要密码

防火墙也要关。或者开一下端口 不然服务启不了

部署文档 常见问题包括关闭 firewalld,SELinux 的问题我们再确认下,看是否有必要更新到文档,感谢反馈。

试试

tiup cluster deploy tidb-test v3.0.12 ./topology.yaml -i ~/.ssh/id_rsa --user tidb

我试过了。一样报错

不知问题是否已经解决

尝试使用,输入 root 密码。 tiup cluster deploy tidb-test v3.0.12 ./topology.yaml

我今天在centos7.7上使用tiup部署也是报创建目录权限问题,看日志好像是部署脚本在创建/tidb-data和/tidb-deploy目录时候没有加sudo,所以我直接在部署目标服务器上手动创建/tidb-data和/tidb-deploy目录,另外还需要手动创建/tidb-data-monitored-9100目录,然后将这几个目录权限赋给tidb用户,然后就部署成功了。

:ok_hand:

中控机tidb用户模式下,ssh-copy-id root@ip 然后部署命令如下 tiup cluster deploy tidb-lb v4.0.0-rc ./topology.yaml --user root -i /home/tidb/.ssh/id_rsa 亲测有效,另外如果中控机在集群内,ssh-copy-id 也需要root本机秘钥免密

1赞