2012-05-31 4 views
11

Ich verwende meinen TeamCity 7-Server und -Agenten unter MacOS. Mein Repo ist auf Github. Ich benutze SSH und ich weiß, dass die Authentifizierung korrekt konfiguriert ist, da der Test erfolgreich ist.Fehler im TeamCity-Agenten "Fehler beim Auschecken am Agenten"

Der Build funktioniert gut, wenn ich VCS Checkout-Modus "Automatisch auf dem Server" verwende, aber wenn ich VCS Checkout-Modus "Automatisch auf Agent" verwende, erhalte ich diesen Fehler.

[13:40:35][Updating sources] Failed to perform checkout on agent: '/usr/bin/git fetch --progress origin +refs/heads/master:refs/remotes/origin/master' command failed. 
stderr: java.io.IOException: Authentication failed 
    at org.jetbrains.git4idea.ssh.SSHMain.authenticate(SSHMain.java:275) 
    at org.jetbrains.git4idea.ssh.SSHMain.start(SSHMain.java:159) 
    at org.jetbrains.git4idea.ssh.SSHMain.main(SSHMain.java:139) 
fatal: The remote end hung up unexpectedly 

Was fehlt mir?

+1

Haben Sie den richtigen SSH-Schlüssel auf dem Agenten? "Verbindung testen" in den VCS-Stammeinstellungen testet die Verbindung nur zwischen dem TeamCity-Server und Ihrem Repository. – neverov

+0

Ich denke ich nicht, aber wie finde ich den Account des Agenten? Kann ich das Konto ändern, unter dem der Agent funktioniert? – mishod

+0

Konto des Agenten ist das Konto, unter dem der Agent gestartet wurde. Ja, das kannst du ändern. – neverov

Antwort

17

Fügen Sie teamcity.git.use.native.ssh = true als Konfigurationsparameter in Ihre Buildkonfiguration ein.

Es ist, was mir half, ein ähnliches Problem zu lösen. Ich habe diesen Trick von here gelernt.

+0

Dieser Hinweis hat es auch für mich behoben. – cheez

+0

Das hat meinen Tag gemacht! Vielen herzlichen Dank! –

+1

Diese [link] (https://youtrack.jetbrains.com/issue/TW-52052#comment=27-2607007) könnte auch nützlich sein, wenn Sie Putty SSH-Schlüssel haben (siehe Kommentar-Thread) – sam9046

1

Was mir überhaupt nicht offensichtlich war, ist, dass der Default Private Key auf dem Server in den Agenten kopiert und dort verwendet wird. Ich habe zuerst vergeblich versucht, den privaten Schlüssel zu dem Benutzer hinzuzufügen, auf dem der Agent lief (offensichtlich auf dem Agent-Rechner). Aber dann habe ich den privaten Schlüssel zu dem Benutzer hinzugefügt, der TeamCity auf dem Server-Rechner ausgeführt hat, und dann hat der Kassenvorgang des Agenten begonnen zu arbeiten.

Ich habe auch die teamcity.git.use.native.ssh=true Eigenschaft verwendet, aber ich glaube nicht, dass es mit diesem speziellen Problem geholfen hat. Die einzige Spur dieser Information war in this comment.