首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在CI中运行命令而不提示输入密码

如何在CI中运行命令而不提示输入密码
EN

Stack Overflow用户
提问于 2022-02-27 17:40:22
回答 2查看 373关注 0票数 1

我想在gitlab CI的不同阶段包括以下命令。

代码语言:javascript
代码运行次数:0
运行
复制
...
  script: |
    ssh -t ${SOME_USER}@${REMOTE_HOST} '([ -f "${FILE_PATH}/someFile.yaml" ] && cp -v "${FILE_PATH}/someFile.yaml" ${FILE_PATH}/someFile_yaml_$CI_COMMIT_TIMESTAMP.txt)'
...
  script: scp -v ${TF_ROOT}${LOCAL_FILE_PATH} ${SOME_USER}@${REMOTE_HOST}:${FILE_PATH}/
...
  script: ssh -t ${SOME_USER}@${REMOTE_HOST} sudo chown -cv runner:runner ${FILE_PATH}/someFile.yaml
...
  script: ssh -t ${SOME_USER}@${REMOTE_HOST} sudo systemctl restart some-service
...

问题是当我手动执行这个命令时,我必须提供密码,因为这些是远程命令ssh,有些需要sudo,这种方法不能在非交互模式(如CI执行)中工作。

那么,在没有密码提示的情况下,如何在Gitlab CI中执行这些命令呢?

EN

回答 2

Stack Overflow用户

发布于 2022-02-27 18:21:04

根据您的问题,我理解的是,您只是想传递密码来运行命令。

我们必须采取不同的方法来解决这个问题,首先,如果ssh用户有sudo密码,可以使用sshpass命令和所有命令。

下面提到了一些命令以供参考:

代码语言:javascript
代码运行次数:0
运行
复制
sshpass -p 'password' scp file.tar.gz root@xxx.xxx.xxx.194:/file/location
sshpass -p 'password' ssh user@ip command 

另一种方法是创建一个没有密码的sudo用户来运行命令并使用pem键,这样会更安全、更好。

您可以在互联网上搜索使用户无密码以及sudo权限。

我希望这能解决你的问题

票数 0
EN

Stack Overflow用户

发布于 2022-02-28 00:32:51

为什么不使用cron呢?您可以以root用户身份运行脚本,而无需询问密码。

您可以以根用户的身份执行如下操作:

然后,crontab -e

(每45分钟一次)

代码语言:javascript
代码运行次数:0
运行
复制
*/45 * * * * /path/to/script1

(每25分钟,以此类推)

代码语言:javascript
代码运行次数:0
运行
复制
*/25 * * * * /path/to/script2 

等等

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71287058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档