使用TiUP部署 TiDB 集群,如何使用安全认证方式

【 TiDB 使用环境】单机多实例模拟生产环境,公司不提供root密码
【 TiDB 版本】v7.5.0
【复现路径】做过哪些操作出现的问题
1.使用ssh 192.168.36.61连接,192.168.36.61用户是deployer,没有sudo权限,没有root密码
按照文档使用 TiUP 单机多实例部署 TiDB 集群,在第 4 步:执行部署命令
tiup cluster check ./topology.yaml --user root
时,没有使用安全认证方式,文档中提示两种认证方式不清楚如何生成。
文档通过 TiUP 进行集群部署可以使用密钥或者交互密码方式来进行安全认证:
如果是密钥方式,可以通过 -i 或者 --identity_file 来指定密钥的路径。请问该密钥如何生成?
如果是密码方式,可以通过 -p 进入密码交互窗口。请问该SSH Password如何生成?

【遇到的问题:问题现象及影响】
执行命令时日志出现如下错误。依据个人猜测大致意思是在连接 ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain。无法认证192.168.36.61。
2024-02-02T17:05:09.862+0800 INFO Execute command finished {“code”: 1, “error”: “failed to fetch cpu-arch or kernel-name: executor.ssh.execute_failed: Failed to exe cute command over SSH for ‘root@192.168.36.61:22’ {ssh_stderr: , ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin uname -m}, cause: ssh: handsh ake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain”, “errorVerbose”: “executor.ssh.execute_failed: Failed to execute comman d over SSH for ‘root@192.168.36.61:22’ {ssh_stderr: , ssh_stdout: , ssh_command: export LANG=C; PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin uname -m}, cause: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain\n at github.com/pingcap/tiup/pkg/cluster/executor.(*EasySSHExecutor).Execute()\n\tg ithub.com/pingcap/tiup/pkg/cluster/executor/ssh.go:174\n at github.com/pingcap/tiup/pkg/cluster/executor.(*CheckPointExecutor).Execute()\n\tgithub.com/pingcap/tiup/pkg/cluster/e xecutor/checkpoint.go:86\n at github.com/pingcap/tiup/pkg/cluster/task.(*Shell).Execute()\n\tgithub.com/pingcap/tiup/pkg/cluster/task/shell.go:43\n at github.com/pingcap/tiup/pk g/cluster/task.(*Serial).Execute()\n\tgithub.com/pingcap/tiup/pkg/cluster/task/task.go:86\n at github.com/pingcap/tiup/pkg/cluster/task.(*StepDisplay).Execute()\n\tgithub.com/pi ngcap/tiup/pkg/cluster/task/step.go:111\n at github.com/pingcap/tiup/pkg/cluster/task.(*Parallel).Execute.func1()\n\tgithub.com/pingcap/tiup/pkg/cluster/task/task.go:144\n at ru ntime.goexit()\n\truntime/asm_amd64.s:1650\ngithub.com/pingcap/errors.AddStack\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/errors.go:174\ngithub.com/pingc ap/errors.Trace\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/juju_adaptor.go:15\ngithub.com/pingcap/tiup/pkg/cluster/task.(*Shell).Execute\n\tgithub.com/pi ngcap/tiup/pkg/cluster/task/shell.go:50\ngithub.com/pingcap/tiup/pkg/cluster/task.(*Serial).Execute\n\tgithub.com/pingcap/tiup/pkg/cluster/task/task.go:86\ngithub.com/pingcap/ti up/pkg/cluster/task.(*StepDisplay).Execute\n\tgithub.com/pingcap/tiup/pkg/cluster/task/step.go:111\ngithub.com/pingcap/tiup/pkg/cluster/task.(*Parallel).Execute.func1\n\tgithub. com/pingcap/tiup/pkg/cluster/task/task.go:144\nruntime.goexit\n\truntime/asm_amd64.s:1650\nfailed to fetch cpu-arch or kernel-name”}

使用-p指定root权限账户和密码后,使用tiup cluster check ./topology.yaml --apply --user k8soperator -p命令来啊执行检查,发现挂载目录中不支持nodelalloc参数
does not have ‘nodelalloc’ option set, auto fixing not supported。请问大佬们如何解决呢
[deployer@k8s-node2 tidb]$ tiup cluster check ./topology.yaml --apply --user k8soperator -p
tiup is checking updates for component cluster …
Starting component cluster: /home/deployer/.tiup/components/cluster/v1.14.1/tiup-cluster check ./topology.yaml --apply --user k8soperator -p
Input SSH password:

  • Detect CPU Arch Name

    • Detecting node 192.168.36.61 Arch info … Done
  • Detect CPU OS Name

    • Detecting node 192.168.36.61 OS info … Done
  • Download necessary tools

    • Downloading check tools for linux/amd64 … Done
  • Collect basic system information

  • Collect basic system information

    • Getting system info of 192.168.36.61:22 … Done
  • Check time zone

    • Checking node 192.168.36.61 … Done
  • Check system requirements

  • Check system requirements

  • Check system requirements

  • Check system requirements

    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
    • Checking node 192.168.36.61 … Done
  • Cleanup check files

    • Cleanup check files on 192.168.36.61:22 … Done
      Node Check Result Message

192.168.36.61 cpu-cores Pass number of CPU cores / threads: 4
192.168.36.61 cpu-governor Warn Unable to determine current CPU frequency governor policy, auto fixing not supported
192.168.36.61 disk Fail mount point /cubd/tidb1 does not have ‘nodelalloc’ option set, auto fixing not supported
192.168.36.61 disk Fail mount point /cubd/tidb4 does not have ‘nodelalloc’ option set, auto fixing not supported
192.168.36.61 thp Pass THP is disabled
192.168.36.61 command Pass numactl: policy: default
192.168.36.61 os-version Pass OS is CentOS Linux 7 (Core) 7.9.2009
192.168.36.61 memory Pass memory size is 16384MB
192.168.36.61 network Pass network speed of cali180eff2222a is 10000MB
192.168.36.61 network Pass network speed of cali3b166e8a736 is 10000MB
192.168.36.61 disk Warn mount point / does not have ‘noatime’ option set, auto fixing not supported
192.168.36.61 disk Warn mount point /cubd/tidb1 does not have ‘noatime’ option set, auto fixing not supported
192.168.36.61 disk Warn mount point /cubd/tidb4 does not have ‘noatime’ option set, auto fixing not supported
192.168.36.61 selinux Pass SELinux is disabled

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面



【附件:截图/日志/监控】

输入密码就是root 密码,需要所有要部署组件机器的root密码一致
用秘钥登陆就是要配置tiup机器到要部署机器的ssh免密权限,用sshkey_gen命令生成,具体操作方法可百度

没有sudo权限,没有root密码的话,无法部署集群的,可以tiup playground v7.5.0 --host 0.0.0.0生成单机测试环境体验一下

很简单 tiup cluster check ./topology.yaml --user root -p

加上-p输入下root密码就行,要求所有机器root密码相同,然后你就不用折腾权限了

1 个赞

生产环境的话,建议创建一个tidb用户,所有节点的tidb用户都相同,然后部署的时候使用tidb用户进行部署,tiup部署的时候加上-p参数,示例:tiup cluster check ./topology.yaml --user tidb -p

没必要的,tiup直接用–user root装 ,只要你的yaml文件写了tidb运行用tidb用户,安装脚本自动会创建的,没必要自己手工创建,服务器多了很麻烦

你说的没毛病,但是很多公司DBA是没有root用户登录权限的

安装用下,平时并不用的

:thinking:单机多实例也要做互信吧?好久没部署了,但是感觉新版本应该也是要做互信的。

Mark,等待方案 :index_pointing_at_the_viewer:

这个安装必须有root权限

已经使用tiup playground体验过可以使用,但是通过自己win电脑的go 和python api连接时做CRUD时还是关闭了ssl,ssl设置为true时还是出现错误

你启用tls了吗?https://docs.pingcap.com/zh/tidb/v6.5/enable-tls-between-clients-and-servers#为-tidb-客户端服务端间通信开启加密传输

tls没有启用,

我没理解错的话,你是通过程序连接tidb-server是吧,那你不得开启了上面的tls再通过ssl来连接吗?

是的,需要开启tls

问公司同事要了root密码,直接可以登录了

部署用一次root,以后一般不用的,tidb用户自动建好了你自己改个密码

加白名单比较好一些。

1 个赞

集群正常启动了,但是auto-tls=false,并没有开启tls。客户端USE_SSL=‘false’。这种关闭tls的集群可以正常使用吧。有什么缺点吗,通义千问上回答是说不安全,但是我理解集群照常可以使用。
通义千问上的回答:
如果在 TiDB 集群中不开启 TLS(Transport Layer Security)加密,会存在以下影响:

  1. 数据传输安全风险: 不启用 TLS 时,TiDB 服务与客户端之间的通信将不会进行加密。这意味着所有在网络上传输的数据(包括但不限于数据库登录凭据、查询语句以及返回的结果集)将以明文形式传输,容易被网络嗅探或中间人攻击窃取。
  2. 合规性问题: 对于一些需要满足特定安全标准和法规的组织来说,未启用TLS可能不符合数据保护和隐私要求,例如 GDPR 等法规要求对敏感数据进行传输加密。
  3. 信任链缺失: 启用 TLS 可以建立服务器身份认证机制,客户端可以通过验证证书来确认连接的是正确的服务器,而不开启 TLS 就无法保证这一点。
  4. 安全性降低: 开启 TLS 能够有效防止重放攻击、篡改数据等安全威胁,不开启则这些安全保障措施缺失。

综上所述,在生产环境中,为了确保数据库系统的安全性与数据完整性,强烈建议启用 TLS 加密功能。

我是第一次在公司配置tidb集群,之前使用的mysql服务也没有开启ssl。我想着跟之前mysql服务一样。也不配置tls。不知道tidb集群是否会在使用功能上有限制没有

2 个赞