Назад | Перейти на главную страницу

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.

Чтобы сохранить текущие ключи 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/*

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

  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/

sudo не сохранит ваши ключи ~ / .ssh. Это связано с тем, что теперь вы выполняете эту команду как root. Итак, он будет искать ssh-ключи root. Поэтому вам нужно будет создать ключ для root и добавить его своему пользователю github.