【问题标题】:Remembering Password for Git when run under sudo -u在 sudo -u 下运行时记住 Git 的密码
【发布时间】:2020-04-12 23:13:17
【问题描述】:

我有一个小的 bash 脚本,它从 gitlab.com 拉下一个 Laravel git 实例:

        sudo -u www-data git config --global credential.helper store
        sudo -u www-data php artisan down
        sudo -u www-data git pull
        sudo -u www-data composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader

当我(以 root 或任何其他用户)运行此程序时,我收到错误

警告:无法访问“/root/.gitconfig”:权限被拒绝

警告:无法访问“/root/.config/git/config”:权限被拒绝

错误:无法锁定配置文件 /root/.gitconfig:权限被拒绝

然后它会询问我的 gitlab 用户名和密码。如果输入正确,脚本将按预期工作。我如何强制我的脚本记住用户名和密码 - 或者我应该以不同的方式来解决这个问题?目前,我正在以 root 或为此目的创建的另一个 sudoer 身份登录服务器,因为据我了解,www-data 用户不允许或不应该被允许登录。

使用 SSH 密钥似乎对此没有影响。它们在我的帐户上正确设置,但我运行:

root@andach-admin-demo:/var/www/html/demo# git pull
warning: redirecting to https://gitlab.com/andach/andach-admin.git/
Already up to date.
root@andach-admin-demo:/var/www/html/demo# sudo -u www-data git pull
Username for 'https://gitlab.com':

我不明白如何使用 sudo -u www-data 来做到这一点 - 我认为这就是问题所在。

【问题讨论】:

  • 您应该使用 ssh 密钥来避免在 GitLab 中输入您的用户名和密码
  • 您可以使用 ssh 代理转发让远程用户在会话期间“使用”您的 ssh 密钥。 ssh -A user@server.examlpe.com。但是请注意,如果登录用户切换到另一个用户,那个用户将无法访问密钥。

标签: linux git


【解决方案1】:

你应该使用 ssh 密钥来给 GitLab 带来惊喜。

SSH 协议提供了这种安全性,并允许您对 GitLab 远程服务器进行身份验证,而无需每次都提供您的用户名或密码。

https://docs.gitlab.com/ee/ssh/

【讨论】:

  • 已编辑问题以解决 ssh 密钥问题。
【解决方案2】:

现在您已经更新了您的问题并且您已经开始使用 SSH 密钥,您还必须更新您的 git 远程以使用不同于 HTTPS URL 的 SSH URL。

git remote remove origin

git remote add origin git@gitlab.com:<username>/<respository>.git

显然调整以上内容以适合您的存储库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-24
    • 2010-09-27
    • 2012-10-18
    • 2016-08-19
    • 2016-04-24
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多