Zugriff auf ein Remote-Mercurial-Repository über einen SSH-Proxy unter Windows mit Tortoisehg

Zugriff auf ein Remote-Mercurial-Repository über einen SSH-Proxy unter Windows mit Tortoisehg

Ich habe ein Remote-Mercurial-Repository (verwaltet von hg-gateway) auf einem Server. Der Zugriff auf diesen Server ist nicht für die Öffentlichkeit zugänglich; die Firewall erlaubt jedoch SSH-Proxying.

Wie konfiguriere ich einen Windows-Client für den Zugriff auf dieses Repository mit tortoisehg?

Beachten Sie, dass es sich vonDas, da in dieser Frage kein Proxying involviert ist. Ich suche nach dem Windows-Äquivalent von

Host remote-dev
    user mercurialuser
    ProxyCommand ssh -q firewalluser@firewall

für den Zugriff auf ein Mercurial-Repo wie

hg clone ssh://remote-dev/repo

Ich habe eine funktionierende Lösung gefunden und werde sie zum Nutzen der Community unten in den Antworten veröffentlichen.

Antwort1

Annahmen zur Systemadministration finden Sie am Ende dieses Beitrags.

  1. Laden Sie Putty, Plink, Pageant und Puttygen herunter und installieren Sie sie vonHier
  2. wenn Sie keinen SSH-Schlüssel haben, starten Sie Puttygen und:
    1. wenn bereits ein Linux-generierter Schlüssel vorhanden ist:
      1. Wählen Sie „Eine vorhandene private Schlüsseldatei laden“
      2. entsprechende Datei auswählen (Dateierweiterungsfilter muss geändert werden)
      3. Passphrase einfügen
      4. Wählen Sie „Privaten Schlüssel speichern“
    2. anders,
      1. Wählen Sie „Schlüssel generieren“
      2. Maus nach dem Zufallsprinzip bewegen
      3. Wählen Sie „Privaten Schlüssel speichern“
      4. Wählen Sie „Öffentlichen Schlüssel speichern“
  3. Senden Sie Ihrem Systemadministrator den ÖFFENTLICHEN SCHLÜSSEL, nicht den privaten Schlüssel! (Systemadministratoren: lesen Sie weiter unten)
  4. Führen Sie eine Windows-Eingabeaufforderung aus (Start > Ausführen und geben Sie „cmd“ ein) und starten Sie „pageant.exe“.
  5. Rechtsklick auf das Icon in der Iconleiste, „Schlüssel hinzufügen“
  6. Wählen Sie Ihren zuvor gespeicherten privaten Schlüssel aus und geben Sie die Passphrase ein
  7. Startkitt

    1. in Hostname setzen Sie: die IP-Adresse Ihres Repository-Servers
    2. Sitzung speichern unter " remote-dev" (jeder Name ist ok)
    3. gehe zu Verbindung > Proxy
    4. Wählen Sie „lokal“ als Proxy-Typ
    5. Proxy-Hostname: Ihr Firewall-DNS-Eintrag oder Ihre IP-Adresse
    6. Port: 22(oder was auch immer für den SSH-Zugriff auf die Firewall geeignet ist)
    7. Benutzername: hg(oder welcher Benutzer auch immer auf der Firewall Ihren öffentlichen SSH-Schlüssel in .ssh/authorized_files hat)
    8. Ersetzen Sie in „Telnet-Befehl oder lokaler Proxy“ den Inhalt durch „ FULLPATH\plink.exe -v -nc %host:%port %user@%proxyhost“ (beachten Sie, dass Sie den VOLLSTÄNDIGEN Pfad der ausführbaren Datei plink.exe verwenden, z. B. c:\plink.exe).
    9. gehe zu Verbindung > Daten
    10. Benutzername für automatische Anmeldung: hg (oder welcher Benutzer auch immer auf dem Repository-Server hg-gateway ausführt)
    11. zurück zur „Sitzung“
    12. Klicken Sie auf „Speichern“, um die Sitzung zu speichern
    13. Klicken Sie auf „Öffnen“.
    14. Sie sollten etwas wie

      Using username "hg".
      Authenticating with public key "imported-openssh-key" from agent
      Welcome to XXX code repository server!
      Your SSH access is restricted by hg-gateway.
      Summary of repos you have access to:
      
  8. jetzt herunterladen & installierenschildkröte

  9. Starten Sie die Tortoisehg-Werkbank
  10. Datei > Repository klonen
  11. Quelle: ssh:// remote-dev/ repo-name(Remote-Dev muss mit dem übereinstimmen, wie Sie Ihre Sitzung in Putty aufgerufen haben!)
  12. Ziel: Wählen Sie Ihr lokales Ziel
  13. Klicken Sie auf „Klonen“.
  14. das ist es.

So gewähren Sie einem Benutzer Zugriff auf das Remote-Repository:

  1. Fügen Sie den öffentlichen SSH-Schlüssel .ssh/authorized_keysdes Benutzers hgauf der Firewall hinzu
  2. verwenden hg-gateway, um den Schlüssel dieses Benutzers dem hgBenutzer auf dem Server hinzuzufügen

Hinweis: Putty neigt dazu, Schlüssel im PPK-Format zu generieren. Diese müssen in einen einzeiligen SSH-Schlüssel konvertiert werden. Google ist hier Ihr Freund.

Annahmen:

  1. auf der Firewall gibt es einen Benutzer namens ' hg', dessen .ssh/autorhized_keysDatei die öffentlichen Schlüssel aller Benutzer enthält, die auf das Repository zugreifen müssen
  2. Die Datei /etc/ssh/sshd_config der Firewall enthält eine Zeile ähnlich der:

    Match Group dev
        ForceCommand nc -q0 reposerver_ip 22
    

    so dass der Benutzer NICHT angeben kann, mit welchen Hosts eine Verbindung hergestellt werden soll. Der Benutzer ' hg' gehört offensichtlich zur Unix-Gruppe ' dev'.

verwandte Informationen