2013-10-16 9 views
7

の許可拒否(公開鍵)」:これは私のGithubフォルダに含まれているPHP Githubのプルスクリプトエラー、私はGitHubのプル実行するためのPHPスクリプトを設定した

/home/mysite/public_html/github

github_pull.php

<?php 
echo `git pull 2>&1`; 
?> 

私はターミナルからgit pullを実行するかのように、既に、SSH公開鍵を持っていない私のサーバー:

ssh [email protected] 
cd public_html/github 
git pull 

これが正常に作品アップデート(しかし私は、最初のキーRSAのパスワードを入力する必要があります):(コメントを参照してください)。ただし

、私はgithub_pull.phpを実行したときに私が手にパスワードが不要になりました次のエラー: 許可が拒否されました(publickey)。致命的:リモートエンドは、SSH鍵が、私は

<?php echo `whoami`; 

を実行するとコメントしたとして、それがmysite

+0

スクリプトを実行しているユーザー、通常はApacheの 'www_data'はsshキーにアクセスできますか?また、ユーザーがキーの別の場所を確認している可能性があることにも注意してください。 – poke

+0

(1)は、あなたのウェブサーバがあなたのユーザであるか、 'www-data'ですか? (2)はWebサーバーで読み取り可能なSSHキーですか? (3)Webサーバーは実際にそのキーを探しますか? (あなたはいつも 'export GIT_SSH ="あなたのsshコマンド "を試すことができます) – Wrikken

+0

しかし、私はrsaキーのパスワードを最初に入力する必要があります。つまり、対話的にキーを使うことはできません。私。キーが使用可能であっても動作しません。 – AD7six

答えて

3

を出力/home/mysite/.ssh/id_rsa

に含まれる予想外に

、最初のHTTPSのURLを試してみてくださいハングアップ:

ssh [email protected] 
cd public_html/github 
git remote set-url origin https://github.com/username/reponame 
git pull 

これはi特にパスフレーズが保護されている場合には、sshキーを使用するよりはるかに簡単です。


あなた必見使用のSSHキーは、その後、あなたがキーのデフォルト場所を知らなければならない場合は、次のとおりです。スクリプトを実行するユーザーが、それを、「mysite」です

~/.ssh/id_rsa(.pub) 

場合~mysite/.ssh/id_rsaが検索されます。
ssh-agentmysiteユーザーとして実行されていることを確認する必要があります。だから、最初にプライベートキーではなく、をパスフレーズで保護する方が簡単です。あなたのSSH鍵がどこかになるとしたら

、あなたが必要になります。その設定ファイルで

~mysite/.ssh/config 

illustrated hereとして、あなたが使用するキーの場所と名前を指定することができます。

+0

あなたの最初の解決策は、パスワード)。しかし、私はこのエラーがPHPスクリプト: '致命的: 'https://github.com'のユーザー名を読み取ることができませんでした:そのようなデバイスまたはアドレス'。スクリプトにユーザー名とパスワードをどのように伝えることができますか? – Tom

+0

@Tomを引っ張るために、あなたは信用証明書を必要としません。ユーザー名とパスワードは必要ありません(プライベートレポでない限りプライベートレポですか?)。それ以外の場合は、あなたのクレデンシャルを '〜/ .netrc'ファイルに保存します:http://stackoverflow.com/a/11022181/6309 – VonC

+0

プライベートレポです。 .netrc(/home/mysite/.netrc)を作成し、以下の内容を入力してください: 'machine mysite.com login password '。上記と同じPHPを使用していますが、私はまだ致命的な問題を抱えています。ユーザー名のエラーを読み取ることができませんでした。代わりに "github.com"を試してみました。助言がありますか?ありがとうございます – Tom

2

実際には 'mysite'アカウントを使用してデバッグしてください。

sudo -u mysite 
cd ~/public_html/github 
git pull 

エラーログから、ローカルではなく遠隔の問題であるようです。意味SSHは実際にあなたの秘密鍵にアクセスできます。

githubが「mysite」公開鍵ではなく、(ssh-agent経由で)あなたの個人秘密鍵を受け取っていると思われます。あなたのPHPコード内でssh-add -lを実行するか、sudo -u mysite; ssh-add -lを実行してgithubインターフェイスに登録されているものと比較することでこれを検証できます。 https://help.github.com/articles/error-permission-denied-publickey

2

url = [email protected]:git_repo_name.git 
からのリモートレポURLをあなたの.ssh/configのに次

Host github_server 
    HostName github.com 
    User git 
    IdentityFile /path/to/your/private_key 

編集します.git/configに追加し、更新:Githubには広範囲にこの問題をカバーしている

~

url = [email protected]_server:git_repo_name.git 

これは、指定されたキーを使用してサーバーにログインするのに役立ちます。上のキーへのパスを、マシン上の完全なパスに置き換えます。レポ名を実際のレポ名に置き換えます。ユーザー 'mysite'がキーファイルにアクセスできることに注意してください。 PHPからfopenを使ってテストして確認できます。

関連する問題