自分のプライベートサーバをプライマリgitリモートにして、自動的にgithubにミラーリングしようとしています。私はthis articleを見つけました。ほとんどpost-receive
スクリプトのgit push --mirror
(本質的に)で動作します。自己ホストのgitリポジトリをgithub.comにミラーリングする(auth failures)
私のアプローチは、デプロイメントキーを作成してセキュリティで保護し、それをすべてのリポジトリで構成する必要がない点で異なっています。
私のポスト受信スクリプトは、上記のブログ記事のように完全なnohup + stdioリダイレクト+バックグラウンドを実行する場合を除いて、コメントにマークされている以下の亜種のほとんどで正しく動作します。
GITHUB_USERNAME=focusaurus
BARE_PATH=$(pwd -P)
REPO_NAME=$(basename "${BARE_PATH}")
REPO_URL="ssh://[email protected]/${GITHUB_USERNAME}/${REPO_NAME}"
echo "About to mirror to ${REPO_URL}"
#hmm, this works
#git push --mirror "${REPO_URL}"
#this works, too
#nohup git push --mirror "${REPO_URL}"
#and this also works OK
nohup git push --mirror "${REPO_URL}" &
#but this fails with
#Permission denied (publickey).
#fatal: The remote end hung up unexpectedly
#Somehow ssh agent forwarding must get screwed up? Help me, Internet.
#nohup git push --mirror "${REPO_URL}" &>>/tmp/mirror_to_github.log &
#this is the one used in the blog post above but it also fails
# nohup git push --mirror "${REPO_URL}" &>/dev/null &
私は動作バージョンがどのように動作するかを信じているsshエージェントフォワーディングを持っています。だから私の質問は、最後の2つのバリエーションが認証エラーで失敗するのはなぜですか?
エラーはこれらの変更によって発生したもので、それ以外のものではありませんか? –
はい。私は上記のすべての味をテストしましたが、コメントごとに、「正常に動作する」とマークされたものは確実に動作し、stdioの処理方法を一貫して変更すると失敗します。 –
だから、問題は私のsshの設定で何かかもしれないようです。調査する。 –