Sudo git как другой пользователь с ssh-agent для доступа к ключу - PullRequest
6 голосов
/ 06 февраля 2012

У меня есть ssh-agent для пользователя www-data и пароль, сохраненный для закрытого ключа

от пользователя root. Мне нужно запустить «sudo -u www-data git pull», чтобы он неспросите пароль для секретного ключа git.sudo не запускает скрипт .bashrc, поэтому не знаете, как это осуществить?

есть предложения?

Ответы [ 2 ]

3 голосов
/ 31 мая 2012

Я делаю это и делаю ssh-add как часть моего .bash_profile:

sudo -u otherusername ssh-agent bash -l

К сожалению, у меня, похоже, нет истории при использовании стрелки вверх при выполнении этого,Однако, я делаю, когда запускаю ту же команду, за исключением части sudo.

Кстати, это то, что у меня есть в моем профиле bash для автоматического запуска ssh-agent (только один раз) и добавления RSAключ (только один раз):

# Start ssh-agent & add key
if [[ -z $SSH_AGENT_PID ]]; 
then 
    echo Starting ssh-agent automatically...
    ssh-agent bash -l
elif [[ 0 == `ssh-add -l | grep "(RSA)" -c` ]];
then
    echo Adding ssh key automatically...
    # you might have your key in a different location:
    ssh-add ~/.ssh/idents/id_rsa
fi
2 голосов
/ 06 февраля 2012

Возможно, вы хотите вариант -i? От man sudo:

-i [command]

Параметр -i (имитировать начальный вход в систему) запускает оболочку, указанную в записи passwd (5) целевого пользователя, в качестве оболочки входа в систему. Это означает, что специфичные для входа файлы ресурсов, такие как .profile или .login, будут читаться оболочкой. Если указана команда, она передается в оболочку для выполнения. В противном случае выполняется интерактивная оболочка.

...