如何在PHP Fog上指定用于Git Push的密钥文件?

时间:2012-05-24 17:59:00

标签: php git ssh phpfog

以下是我的〜/ .ssh / config内容

ForwardAgent yes

# Default PHP Fog user (name)
Host phpfog
HostName git01.phpfog.com
User git
IdentityFile /Users/Pk_2/.ssh/id_rsa_phpfog


# Default github
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile /Users/Pk_2/.ssh/id_rsa

但是当我尝试在phpfog repo文件夹上执行git push时它会给我

Permission denied(public key)
fatal:the  remote end hung up unexpectedly 

但是除非我将id_rsa_phpfog重命名为id_rsa,否则我无法推送到phpfog。我可以指定密钥文件

PHPFog config - http://docs.phpfog.com/getting-started/ssh/

3 个答案:

答案 0 :(得分:1)

您的项目的.git / config可能需要进行编辑,以允许原点使用您在〜/ .ssh / config

中定义的主机

修改您的< project folder >/.git/config文件

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = <ssh-config-host>:<app_name_here>

如果您的应用名称是www.example.com,那么网址行将如下所示:

url = phpfog:www.example.com

或者您还可以使用您定义的主机重新克隆您的应用:

git clone phpfog:www.example.com

答案 1 :(得分:0)

在我的~/.ssh/config文件中,每个“主机”定义中都有一行:

IdentitiesOnly yes

git为不同的主持人使用不同的密钥工作愉快。

答案 2 :(得分:0)

您可以使用:

ssh phpfog -vvv

获取ssh在尝试连接时正在执行的操作的调试输出。如果您使用的是其他密钥,则应该看到类似

的内容
debug1: Reading configuration data /Users/<yourusername>/.ssh/config
debug1: Applying options for phpfog
debug1: Reading configuration data /etc/ssh_config
...
debug1: Offering RSA public key: /Users/<yourusername>/.ssh/id_rsa_phpfog
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply

如果您没有看到提及id_rsa_phpfog的任何内容,则表示您未使用您在.ssh/config文件中定义的主机名,或者该文件不在正确的位置。

如果所有看起来都正确,那么你在phpfog上添加的公钥很可能是不正确的(与你自己的公钥不完全匹配)