2016-06-30 19 views
1

Ich habe ein seltsames Problem hier. Unser Maven-Release-Plugin schlägt fehl, weil es kein Tag nach Git schicken kann. Die folgende fehlschlägt:Git Push schlägt mit öffentlichen Schlüssel bei der Verwendung von SSH und Angabe von Anmeldeinformationen

git push ssh://PU0S:[email protected]/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. 

Wenn ich remote in die Maschine und versuchen, mit einer URL der Form drückt ich den gleichen Fehler:

git push ssh://PU0S:[email protected]/u0r0-SS/workspace-proxy.git 

Wenn ich drücken Sie einfach die definierte Fernbedienung benutzen, es gelingt :

git push origin master 

die oben macht mich sicher, dass die .ssh Tasten an der Maschine zur Verfügung stehen. Warum scheitert die erste Form?

+0

Also, wenn Sie Workspace-Proxy-Server-1.10 ausgecheckt haben.1 auf dieser Fernbedienung können Sie drücken, wenn der öffentliche Schlüssel Ihres Geräts zu den Einstellungen dieses Repos hinzugefügt wird. Wenn der Repo Ihren öffentlichen Schlüssel nicht kennt, können Sie ihn nicht drücken (/root/.ssh/id_rsa .pub oder /youruser/.ssh/id_rsa.pub Inhalt muss in den Remote-Repo kopiert werden, um Zugriff zu gewähren.) – dmitryro

+0

Ich frage mich, wie viel von einem Anstieg der Anfragen an git-eim.fg.rbc.com wir bekommen werden diese Frage;) – Populus

+0

Also ich versuche ein paar mehr Dinge. Jede Idee, warum der folgende Befehl fehlschlägt 'git clone ssh: // git-eim.fg.com/u0r0-SS/workspace-proxy.git', aber Folgendes gelingt' ssh: //[email protected]/u0r0-SS/workspace-proxy.git'? Was ist das Besondere an git @? – timmy

Antwort

0

Die folgenden Hinweise halfen bei der Diagnose des Problems.

Lassen Sie uns zuerst ssh -vT ausprobieren, ohne einen Benutzer anzugeben. Beachten Sie, dass in der Sitzung davon ausgegangen wird, dass es sich bei dem Benutzer um das Konto handelt, das angemeldet ist und ein Sonderzeichen ('SE121947 + PVHF0ONE_SS') hat!

$ 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). 

lässt es nun versuchen, mit Angabe [email protected]

$ ssh -vT [email protected] 
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 [email protected] <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. 

Merkwürdige ist [email protected] von [email protected] und die Authentifizierungs-Werke ersetzt werden kann! Es ist fast so, als wäre es nur ein Platzhalter. So wurde das Update sichergestellt, dass die developerConnection in der pom.xml eine [email protected] hatte, damit Git authentifiziert werden kann.

+0

"Seltsames Ding ist' git @ 'kann durch' foo @ 'ersetzt werden und die Authentifizierung funktioniert! Es ist fast so, als wäre es nur ein Platzhalter." Nein, es ist kein Platzhalter. Wenn es mit 'foo' arbeitet, bedeutet das, dass ~ ~ foo/.ssh/authorized_keys' Ihren öffentlichen ssh-Schlüssel hat. Meine Antwort empfahl die Verwendung von 'git @' die ganze Zeit. – VonC

+0

Ich habe dies gegen github.com versucht: 'ssh -Tv crazy @ github.com'. Und es funktioniert. Vertrauen Sie mir, ich habe keinen Benutzer namens verrückt. Es hat den Schlüssel in meinem ~/.ssh-Ordner aufgehoben. Hast du irgendeine Dokumentation von git @? Ich konnte keine finden. – timmy

+0

GitHub verwaltet SSH-Schlüssel nicht wie jeder normale SSH-Server. Es hat sein eigenes öffentliches Schlüsselverwaltungssystem. Der Benutzer vor @ github spielt keine Rolle. Es ist wichtig, dass Ihr öffentlicher Schlüssel in Ihrem GitHub-Konto registriert ist. – VonC

0

git sucht nach dem ssh an einem bestimmten Ort unter Ihnen .ssh Ordner.

Legen Sie die Schlüssel in der Konfigurationsdatei und Sie sollten in der Lage sein, es zu klonen.

Öffnen Sie ein Terminalfenster. Bearbeiten Sie die Datei ~/.ssh/config.
Wenn Sie keine Konfigurationsdatei haben, erstellen Sie eine. einen Aliasnamen für jede Identität Kombination beispielsweise hinzufügen:

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

Also versuche ich ein paar mehr Dinge. Jede Idee, warum der folgende Befehl fehlschlägt 'git clone ssh: // git-eim.fg.com/u0r0-SS/workspace-proxy.git', aber Folgendes gelingt' ssh: //[email protected]/u0r0-SS/workspace-proxy.git'? Was ist das Besondere an git @? – timmy

2

Any idea why the following command fails git clone ssh://git-eim.fg.com/u0r0-SS/workspace-proxy.git but the following succeeds ssh://[email protected]/u0r0-SS/workspace-proxy.git ?
What is special about [email protected] ?

[email protected] bedeutet die Benutzer, die die Push-git wird erhalten. Die Authentifizierung wird dann von dem für ssh verwendeten öffentlichen Schlüssel verwaltet.
Dies unterscheidet sich von PU0S:xL8q, das ist ein Benutzername/Passwort, nur bei Verwendung einer https URL erforderlich.
Für eine ssh-URL drücken Sie niemals "wie Sie" (PU0S), sondern als das Konto, das die Git-Repos auf der Serverseite verwaltet.
Deshalb drücken Sie zum Beispiel immer auf .

Wenn git push origin master erfolgreich ist, bedeutet dies, dass die mit dem Remote verknüpfte URL "origin" richtig formatiert ist.
In der Regel ssh://[email protected]/u0r0-SS/workspace-proxy.git.

Mit git remote -v oder since git 2.7 mit git remote get-url origin überprüfen.

+0

Es scheint, dass 'git @' nicht auf dem Server existieren muss. Zum Beispiel funktioniert dieser Befehl für mich: 'git clone foo @ git-eim.fg.com/u0r0-SS/workspace-proxy.git'. Überrascht dich das? – timmy

+0

@timy es hängt von der Art des Git-Servers (ist es von Gitolit, Gitlab, andere verwaltet?). Aber ein Klon könnte für jedes Konto funktionieren, da Sie den vollständigen absoluten Pfad des Repos angeben, indem Sie jedes Steuerelement umgehen, das ein Git-Hosting-Dienst (wie Gitolite oder Gitlab) mit seinem speziellen Account-Git eingerichtet haben könnte. – VonC

+0

@timy Kurz gesagt, wenn Sie den vollen absoluten Pfad eines Repos haben, wird git alone nicht die Authentifizierung oder Autorisierung kontrollieren, wie ich in http://stackoverflow.com/a/5685757/6309 – VonC