使用SSH并指定凭据时,Git push使用公钥失败

时间:2016-06-30 22:33:14

标签: git maven ssh-keys

我这里有一个奇怪的问题。我们的Maven发布插件失败,因为它无法将标签推送到Git。以下失败:

git push ssh://PU0S:xL8q@git-eim.fg.com/u0r0-SS/workspace-proxy.git workspace-proxy-server-1.10.1
[ERROR] Permission denied (publickey).
[ERROR] fatal: Could not read from remote repository.
[ERROR] 
[ERROR] Please make sure you have the correct access rights
[ERROR] and the repository exists.

如果我远程进入机器并尝试使用表单的URL推送,我会得到同样的错误:

git push ssh://PU0S:xL8q@git-eim.fg.com/u0r0-SS/workspace-proxy.git

如果我只是推动使用已定义的遥控器,它就会成功:

git push origin master

以上说明我确定机器上有.ssh个密钥。为什么第一种形式失败?

3 个答案:

答案 0 :(得分:2)

  

知道为什么以下命令失败git clone ssh://git-eim.fg.com/u0r0-SS/workspace-proxy.git但以下成功ssh://git@git-eim.fg.com/u0r0-SS/workspace-proxy.git?   git@有什么特别之处?

git@表示将接收推送的用户将是git。然后,通过用于ssh的公钥来管理身份验证 这与PU0S:xL8q不同,后者是用户名/密码,仅在使用https网址时才需要 对于一个ssh网址,你永远不会像你一样推动#34; (PU0S)但是作为管理服务器端git repos的帐户 这就是为什么,例如,你总是推动git@github.com

如果git push origin master成功,则表示与名为' origin'的远程关联的网址正确形成。
通常是ssh://git@git-eim.fg.com/u0r0-SS/workspace-proxy.git

使用git remote -v查看,git remote get-url origincompile 'me.everything:providers-android:1.0.1'

答案 1 :(得分:0)

git在你.ssh文件夹下的某个位置查找ssh。

在配置文件中设置密钥,您应该能够克隆它。

打开终端窗口。 修改~/.ssh/config文件。
如果您没有配置文件,请创建一个。 为每个标识组合添加别名,例如:

Host workid
HostName github.com 
IdentityFile ~/.ssh/workid

答案 2 :(得分:0)

以下线索有助于诊断问题。

首先,让我们尝试ssh -vT而不指定用户。请注意,会话假定用户是登录的帐户,该帐户具有特殊字符(' SE121947 + PVHF0ONE_SS')。

 $ ssh -vT git-eim.fg.com
OpenSSH_7.1p2, OpenSSL 1.0.2g  1 Mar 2016
....
debug1: Authenticating to git-eim.fg.com:22 as'SE121947+PVHF0ONE_SS'
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /c/Users/PVHF0ONE_SS/.ssh/id_rsa
debug1: No more authentication methods to try.

Permission denied (publickey).

现在让我们通过指定git@git-eim.fg.com

来尝试
$ ssh -vT git@git-eim.fg.com
OpenSSH_7.1p2, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to git-eim.fg.com [10.238.35.34] port 22.
debug1: Connection established.
debug1: identity file /c/Users/PVHF0ONE_SS/.ssh/id_rsa type 1
...
debug1: kex: server->client chacha20-poly1305@openssh.com <implicit> none
Authenticated to git-eim.fg.com ([10.238.35.34]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
Hi PU0R0SRVDEVOPS! You've successfully authenticated, but GitHub does not provide shell access.

奇怪的是git@可以被foo@取代,并且身份验证有效!它几乎就像是一个占位符。因此,修复程序确保pom.xml中的developerConnection具有git@,以便git能够进行身份验证。