【发布时间】: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。但是请注意,如果登录用户切换到另一个用户,那个用户将无法访问密钥。