ssh - Windows TortoiseHg plink hænger efter klon/push

Indlæg af Hanne Mølgaard Plasc

Problem



Vi har et helt Windows-netværk, og jeg forsøger at få Tortoise Mercurial op og køre over SSH til et centralt repo for vores lille team at bruge. Jeg kan få det til at fungere for det meste, men plink/tortoiseplink hænger efter at have udført kommandoer med succes ( klon/push osv.)


Jeg har oprettet Freesshd på vores Widnows 2008 rc2 server sammen med Tortoise Hg. Jeg har genereret mig en offentlig/privat nøgle på serveren (havde problemer med at generere på klienten) ved hjælp af PuttyGen. Privat nøgle Jeg kopierede til min klient og opdaterede mercurial.ini. Offentlig nøgle Jeg omdøbte og opdaterede Freesshd for at pege på mappen indeholdende de offentlige nøgler.
På klientsiden har jeg registreret min private nøgle med Pageant, lavet en session i Putty sammen med at pege på den private nøgle og gemt den.
Når jeg bruger Putty til at lave min første forbindelse, begynder tingene at gå underligt.


Jeg får en kommandoprompt for brugernavn (ingen prompt for adgangskode), og ved kommandoprompten (efter godkendelse) kan jeg ikke skrive.
Måske et problem med Putty. Jeg vil prøve at bruge Tortoise via (TortoisePlink.exe).


I mercurial.ini har jeg:
    [[Ui]]
    ssh='C: \ kittet \ TortoisePlink.exe' -ssh -2-batch -C -i C: \ Users \ Jude.ssh \ JudePrivate.ppk


Hvis jeg bruger konsollen, kan jeg klone repoet, men det hænger efter at have gjort alt. Brug af - debug, den sidste linje er:
    3 filer opdateret, O-filer slettet, 0 filer fjernet, 0 filer uløst


Slags hvad jeg ville forvente som filerne får kloner. Men så kan jeg ikke gøre noget andet. Ctrl+C gør intet, og jeg er nødt til at dræbe processen. (Som forresten, så viser Ctrl ^ C ved kommandoprompt samt resten af ​​tastaturet mashing ).


Repoen bliver klonet, den korrekte version af filerne vises, men konsolvinduet lukker ikke eller giver mig tilbage kontrol.


Hvis jeg forsøger at bruge Hg Workbench, får jeg et lignende problem. Jeg kan klone og skubbe - det sker faktisk - men ved hjælp af GUI får jeg:


\% hg --repository C:
epositoriesHgTest push --debug          
ssh://Jude@dev01:22/d:/repositories/hgtest
pushing to ssh://Jude@dev01:22/d:/repositories/hgtest
running "C:puttyTortoisePlink.exe" -ssh -2 -batch -C -i
C:UsersJude.sshJudePrivate.ppk Jude@dev01 -P 22 "hg -R d:/repositories/hgtest serve --stdio"
sending hello command
sending between command
remote: 145
remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
remote: 1
query 1; heads
sending batch command
searching for changes
all local heads known remotely
no changes found
sending listkeys command
checking for updated bookmarks
sending listkeys command


Den grønne bjælke øverst på Workbench siger 'Skubbe til ssh://Jude @ dev01: 22/d:/repositories/hgtest ...' som gør statuslinjen nederst. Jeg forlod det som hel weekend, og da jeg kom tilbage var det stadig som det. Jeg kan stadig bruge Hg Workbench (slags), men kan ikke bruge pull/push/klone. Forsøger at lukke Hg Workbench-resultaterne i meddelelsen (i statuslinjen) Sync tab cannot exit og jeg kan ikke lukke appen . At dræbe TortoisePlink.exe (eller Plink.exe, alt efter hvad jeg forsøger) frigør appen, jeg kan bruge den eller lukke den som normalt.


Oprindeligt troede jeg, det var et problem med TortoiseHg eller TortoisePlink, men downloading Plink fra Putty-webstedet resulterer i det samme.


At afklare:

 - Jeg kan skubbe/klone via SSH og ingen adgangskode prompt

 - Jeg kan gøre dette via kommandolinjen eller Hg Workbench

 - Uanset hvilken metode jeg bruger (eller Plink.exe eller TortoisePlink.exe) skal processen slås manuelt.


Software anvendt + versioner

Klient (Windows Vista 32bit)

Skildpadde Hg 2.3 (merc 2.1, Python 2.6.6)

Plink 0.62

Server - (Windows 2008 server rc2)

FreeSSHd 1.2.4

Samme Skildpadde som ovenfor


Masser af søgning har givet intet brug. Jeg har prøvet alle de forslag, jeg har set (selvom det er marginalt relateret), men til ingen nytte. Da de egentlige funktioner virker, antager jeg, at jeg har korrekt oprettet nøglerne, SSH, Skildpadden osv.


Jeg håber jeg mangler en simpel mulighed et sted, men jeg formoder, at den venter på en slags brugerprompt.


Med krydsede fingre :)


=== UPDATE ===


Jeg har fundet hændelsesloggen til Putty (right click kit-konsolvindue, voila, 'Event Log' -opsætning. Når jeg har læst sessionen og klikket åben, får jeg konsolvinduet og en login as: prompt. skriver mit navn og rammer tilbage, får jeg:


Reading private key file "C:UsersJude.sshJudePrivate.ppk"
Pageant is running. Requesting keys.
Failed to get reply from Pageant
Offered public key
Offer of public key accepted
Sent public key signature
Access granted
Opened channel for session
Allocated pty (ospeed 38400bps, ispeed 38400bps)
Started a shell/command


Og det er på dette tidspunkt jeg skifter kommandoprompten til c:Windowssystem32> og kan ikke skrive noget.


=== UPDATE 2 ===


Brug plink Jeg gør følgende på konsollen:


plink -v -ssh Jude@dev01 "cmd /c echo hello"


og samt alle de oplysninger, jeg giver, ser jeg helloServer sent command exist status 0 og Disconnected: All channels closed. Dette er hvad jeg ville forvente.


Hvis jeg gør det med tortoiseplink, siger 'tortoiseplink-v -ssh Jude @ dev01' cmd/c echo hello '' Jeg ser intet tilbage eller skrevet til vinduet, og jeg får en kommandoprompt igen.


Dette indebærer, at SSH fungerer som aliaset (dev01). Men skal jeg se noget, når jeg bruger TortoisePlink?


Når du skriver hg clone --verbose -- ssh://Jude@dev01/d:/repositories/hgtest C: epositories est igen, hentes filerne, kopieres dem til testmappen, men returnerer ikke kommandoprompten. Sidste linje er 3 files updated... osv.


=== UPDATE 3 ===


Det ser ud til, at hg.exe er dannet af FreeSSHd på serveren og det lukker/slutter. Når hg.exe-processen dræbes på serveren, opfører klienten (konsol/klon dialogboksen) og afslutter kommandoen yndefuldt.


At afklare:



  1. Jeg bruger klon fra kommandolinje eller HG Workbench og angiver repo alias

  2. Ifølge logfilerne er alt godt, jeg er autentificeret, filerne trækkes ned via SSH og kopieres til den lokale repo, jeg er angivet i 1

  3. På dette tidspunkt hænger det - om konsollen eller HG Workbench eller højreklik på/klon option.

  4. Ved hjælp af Process Explorer på serveren tillader jeg at dræbe hg.exe udgivet af FreeSSHd-tjenesten

  5. Så snart jeg gør dette, siger klienten 'kommandoen er gennemført med succes'.



Så det synes nu at være et problem med Skildpadde Hg på serveren. Måske spiller FreeSSHd og Skildpadden ikke godt sammen ... Jeg antager, at jeg vil geninstallere alt ...


=== UPDATE 4 ===


Det ser ud til, at jeg ikke er den eneste med dette problem. Jeg havde set dette før på SO, men det var ikke relevant på det tidspunkt. Men nu får jeg det samme problem: Mercurial over ssh klient og server på Windows
Dette problem blev ikke løst (for to år siden), så skal jeg holde dette spørgsmål åbent?

Bedste reference



  1. Først og fremmest - læs docs!


    hg help urls
    Valid URLs are of the form:
    
    ....
    
    ssh://[user@]host[:port]/[path][#revision]
    

  2. Plink bruger -l mulighed for brugernavn

  3. Fejlsøg vellykket ssh-forbindelse (og brugbar sti) med ren TortoisePlink, fjern alle unødvendige muligheder