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/*

Есть две проблемы с этим:

  1. Похоже, SSH требует от вас использовать переменную "Host" вместо [user]@[address|domain]
  2. Файл конфигурации, похоже, нуждается в закрытом ключе.

Чтобы исправить первую проблему, я отредактировал строку 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.

Другие вопросы по тегам