我这里有一个奇怪的问题。我们的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
个密钥。为什么第一种形式失败?
答案 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 origin
,compile '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能够进行身份验证。