tiup不创建新的ssh秘钥对

tiup部署实例时会自己创建一套新的秘钥对,能不能让tiup使用系统的秘钥对,不产生新的秘钥对,因为在一些场景下,目标机器的authorize_keys文件是不允许修改的,只能使用系统自带的秘钥对

2 个赞

你自己做ssh互信,然后tiup部署的时候指定秘钥文件就行了

可以参考一下 手动配置 SSH 互信及 sudo 免密码

3 个赞

目标机器已经互信好了,并且不允许修改目标机器的authorize_keys,tiup部署时指定系统秘钥之后,tiup会自己再创建一个新的秘钥对并保存在到~/.tiup/storage/cluster/clusters/{cluster_name}/ssh中,然后tiup会使用新的秘钥对进行互信,之后tiup的操作都会默认使用这个新的秘钥,导致登不上目标机器因为新的秘钥不允许写入目标机器的authorize_keys(写入之后会自动被还原)

你试试在部署的时候不填写验证,就只用 --user加用户,不要写 -p和-i

tiup还是创建了新的id_rsa和id_rsa.pub

https://asktug.com/t/topic/95777
这个文章可以看一下~

2 个赞
$ tiup cluster deploy --help
--skip-create-user       (EXPERIMENTAL) Skip creating the user specified in topology.

如果运行服务的账户是你们自己管理的,可以试试 --skip-create-user 禁止 tiup 自动管理账户

我其实也没试过,我怀疑即使加了这个参数,tiup 还是会尝试用它自己生成的密钥对,这一点非常讨厌

楼主试一试,结果共享一下哈

1 个赞

我之所以说这一点非常讨厌是因为:

  1. 目标节点上所有需要高权限的操作,都可以让命令行--user指定的账户去做,完全不需要运行服务的账户去做
  2. 拓扑文件里指定的账户,只是运行服务的,不需要一个能 SSH 登录机器的账户,更不需要有什么 sudo 权限
  3. 部署和管理用的命令行工具依赖 SSH 是合理的, 但是服务运行应该完全不依赖 SSH 才合理
2 个赞

试过了,加了这个参数,tiup还是会去使用它自己生成的秘钥对

把控制机上的 TIUP HOME 里的私钥文件替换一下?换成能跟服务器上公钥匹配的

目前就是这么做的,只是这么做比较麻烦,希望tiup能早点解决这个问题

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。