我可以通过终端连接远程 git 服务器并与之交互,但无法使用 PHP 进行此操作。我正在尝试执行以下命令:
GIT_SSH_COMMAND="ssh -vvv -i ~/.ssh/id_rsa -F /dev/null" \
/usr/local/bin/git push -u origin master
如果我在终端中执行相同的命令,它就没有问题。我在互联网上搜索答案,但未能找到有效的解决方案。
现在请记住,该存储库尚不存在。我正在尝试通过此命令创建它。我确实在几分钟前使用这个确切的命令成功创建了另一个存储库。知道我缺少什么吗?
这是调试输出。
array:49 [▼
0 => "OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011"
1 => "debug1: Reading configuration data /dev/null"
2 => "debug1: Connecting to git.modernizedmedia.com [208.53.61.173] port 22."
3 => "debug1: Connection established."
4 => "debug1: identity file /Users/greenorange/.ssh/id_rsa type 1"
5 => "debug1: identity file /Users/greenorange/.ssh/id_rsa-cert type -1"
6 => "debug1: Enabling compatibility mode for protocol 2.0"
7 => "debug1: Local version string SSH-2.0-OpenSSH_6.2"
8 => "debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1"
9 => "debug1: match: OpenSSH_6.6.1 pat OpenSSH*"
10 => "debug1: SSH2_MSG_KEXINIT sent"
11 => "debug1: SSH2_MSG_KEXINIT received"
12 => "debug1: kex: server->client aes128-ctr <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="432b2e22206e2e27766e26372e032c33262d30302b6d202c2e" rel="noreferrer noopener nofollow">[email protected]</a> none"
13 => "debug1: kex: client->server aes128-ctr <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="aec6c3cfcd83c3ca9b83cbdac3eec1decbc0ddddc680cdc1c3" rel="noreferrer noopener nofollow">[email protected]</a> none"
14 => "debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent"
15 => "debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP"
16 => "debug1: SSH2_MSG_KEX_DH_GEX_INIT sent"
17 => "debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY"
18 => "debug1: Server host key: RSA ae:63:f0:7f:aa:62:5d:ac:ef:98:d6:66:a9:9c:4d:ce"
19 => "debug1: Host 'git.modernizedmedia.com' is known and matches the RSA host key."
20 => "debug1: Found key in /Users/greenorange/.ssh/known_hosts:64"
21 => "debug1: ssh_rsa_verify: signature correct"
22 => "debug1: SSH2_MSG_NEWKEYS sent"
23 => "debug1: expecting SSH2_MSG_NEWKEYS"
24 => "debug1: SSH2_MSG_NEWKEYS received"
25 => "debug1: SSH2_MSG_SERVICE_REQUEST sent"
26 => "debug1: SSH2_MSG_SERVICE_ACCEPT received"
27 => "debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password"
28 => "debug1: Next authentication method: publickey"
29 => "debug1: Offering RSA public key: /Users/greenorange/.ssh/id_rsa"
30 => "debug1: Server accepts key: pkalg ssh-rsa blen 535"
31 => "debug1: key_parse_private_pem: PEM_read_PrivateKey failed"
32 => "debug1: read PEM private key done: type <unknown>"
33 => "debug1: read_passphrase: can't open /dev/tty: Device not configured"
34 => "debug1: Next authentication method: password"
35 => "debug1: read_passphrase: can't open /dev/tty: Device not configured"
36 => "debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password"
37 => "Permission denied, please try again."
38 => "debug1: read_passphrase: can't open /dev/tty: Device not configured"
39 => "debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password"
40 => "Permission denied, please try again."
41 => "debug1: read_passphrase: can't open /dev/tty: Device not configured"
42 => "debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password"
43 => "debug1: No more authentication methods to try."
44 => "Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)."
45 => "fatal: Could not read from remote repository."
46 => ""
47 => "Please make sure you have the correct access rights"
48 => "and the repository exists."
]
最佳答案
问题已在此处找到
read_passphrase: can't open /dev/tty: Device not configured
您的私钥需要一个密码,但由于没有终端而无法输入。由于 ssh 代理的原因,当您在终端中运行命令时,您可能看不到这一点。
参见https://help.github.com/articles/working-with-ssh-key-passphrases/
一种解决方案是为远程服务创建一个新的 key 对,无需密码。
这样做的安全隐患是,拥有新公钥的远程服务现在仅与私钥副本(即您的本地计算机帐户)一样安全。按照您喜欢的方式评估该风险。
关于php - ssh无法连接到php中的git服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52108163/