etckeeper 推送到 github

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

但是,由于 etckeeper 尝试以 root 身份推送,因此推送到 github 失败。使用 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.

答案1

要保留当前 ssh 密钥以供 root 使用,请使用sudo -E。这样就无需在 root ssh 配置中添加任何内容

答案2

如果有人遇到 git 仍然尝试使用 id_rsa 而不是 /root/.ssh/config 中指定的密钥的问题,这里是我的修复方法。

以下是我修复之前的测试配置文件:

/root/.ssh/配置:

Host bitbucket
    HostName bitbucket.org
    User git
    IdentityFile /root/.ssh/bitbucket.pub

[仓库]/.git/配置:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = [email protected]:trae32566/test.git
    fetch = +refs/heads/*:refs/remotes/origin/*

这有两个问题:

  1. SSH 似乎要求您使用“Host”变量代替 [user]@[address|domain]
  2. 配置文件似乎需要私人的钥匙。

为了解决第一个问题,我编辑了[repo]/.git/config 中的第 7 行:

url = [email protected]:trae32566/test.git

到:

url = bitbucket:trae32566/test.git

为了修复第二个问题,我编辑了 /root/.ssh/config 中的第 4 行:

IdentityFile /root/.ssh/bitbucket.pub

到:

IdentityFile /root/.ssh/bitbucket

来源: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/

答案3

您可以做的一件事是指定一个用于一个 repo 的密钥并将其设置为 git 存储库中的远程存储库。

这意味着你可以把它放在根目录下~/.ssh/config

Host gitupstream
        HostName example.org
        User git
        IdentityFile /home/<user>/.ssh/id_rsa.pub

假设你处于这种情况然后这样做。git remote add gitupstream [email protected]:/myrepogit push origin gitupstream

答案4

sudo 不会保留您的 ~/.ssh 密钥。这是因为您现在以 root 身份运行该命令。因此它将查找 root 的 ssh 密钥。因此您必须为 root 创建一个密钥并将其添加到您的 github 用户。

相关内容