etckeeper подталкивает к github
Я установил 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.
4 ответа
Чтобы сохранить текущие ssh-ключи, когда вы находитесь в root, используйте sudo -E
, Таким образом, нет необходимости добавлять что-либо в конфигурацию root ssh
Если у кого-то есть проблема с git, все еще пытающаяся использовать id_rsa вместо ключа, указанного в /root/.ssh/config, вот мое решение для этого.
Ниже приведены мои тестовые файлы конфигурации перед их исправлением:
/root/.ssh/config:
Host bitbucket
HostName bitbucket.org
User git
IdentityFile /root/.ssh/bitbucket.pub
. [Репо]/ мерзавец / конфигурация:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@bitbucket.org:trae32566/test.git
fetch = +refs/heads/*:refs/remotes/origin/*
Есть две проблемы с этим:
- Похоже, SSH требует от вас использовать переменную "Host" вместо [user]@[address|domain]
- Файл конфигурации, похоже, нуждается в закрытом ключе.
Чтобы исправить первую проблему, я отредактировал строку 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/
Одна вещь, которую вы можете сделать, это указать ключ для использования в одном репо и установить его как удаленный в вашем 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
,
sudo не сохранит ваши ключи ~/.ssh. Это связано с тем, что вы теперь являетесь пользователем root, выполнив эту команду. Поэтому он будет искать ssh-ключи пользователя root. Таким образом, вам нужно создать ключ для root и добавить его к вашему пользователю github.