Я установил etckeeper и добавил файл /etc/etckeeper/commit.d/60github-push
чтобы отправить коммит на github.
[orschiro@thinkpad etc]$ sudo cat /etc/etckeeper/commit.d/60github-push
#!/bin/sh
set -e
if [ "$VCS" = git ] && [ -d .git ]; then
cd /etc/
git push origin master
fi
Однако отправка на github не выполняется, поскольку etckeeper пытается выполнить загрузку с правами root. Должно ли использование sudo не сохранять настройки моей учетной записи для git, включая мои ключи ~ / .ssh?
[orschiro@thinkpad etc]$ sudo etckeeper commit "test"
[master de5971c] test
Author: orschiro <orschiro@thinkpad.(none)>
3 files changed, 2 insertions(+), 1 deletion(-)
rename etckeeper/{ => commit.d}/60github-push (100%)
create mode 100644 test
no such identity: /root/.ssh/id_rsa: No such file or directory
no such identity: /root/.ssh/id_dsa: No such file or directory
no such identity: /root/.ssh/id_ecdsa: No such file or directory
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Чтобы сохранить текущие ключи ssh, когда вы находитесь в root, используйте sudo -E
. Таким образом, не нужно ничего добавлять в корневую конфигурацию ssh
Одна вещь, которую вы можете сделать, - это указать ключ, который будет использоваться для одного репо, и установить его как удаленный в вашем репозитории git.
Это означает, что вы можете поместить это в корневой каталог ~/.ssh/config
:
Host gitupstream
HostName example.org
User git
IdentityFile /home/<user>/.ssh/id_rsa.pub
Предполагая, что вы git remote add gitupstream git@example.org:/myrepo
в этом случае сделайте git push origin gitupstream
.
Если у кого-то есть проблема с git, которая все еще пытается использовать id_rsa вместо ключа, указанного в /root/.ssh/config, вот мое исправление.
Ниже приведены мои тестовые файлы конфигурации перед их исправлением:
/root/.ssh/config:
Host bitbucket
HostName bitbucket.org
User git
IdentityFile /root/.ssh/bitbucket.pub
[репо] /. git / config:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@bitbucket.org:trae32566/test.git
fetch = +refs/heads/*:refs/remotes/origin/*
С этим есть две проблемы:
Чтобы исправить первую проблему, я отредактировал строку 7 в [repo] / .git / config из:
url = git@bitbucket.org:trae32566/test.git
кому:
url = bitbucket:trae32566/test.git
Чтобы исправить вторую проблему, я отредактировал строку 4 в /root/.ssh/config из:
IdentityFile /root/.ssh/bitbucket.pub
кому:
IdentityFile /root/.ssh/bitbucket
источник: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/
sudo не сохранит ваши ключи ~ / .ssh. Это связано с тем, что теперь вы выполняете эту команду как root. Итак, он будет искать ssh-ключи root. Поэтому вам нужно будет создать ключ для root и добавить его своему пользователю github.