
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.
- Laden Sie Putty, Plink, Pageant und Puttygen herunter und installieren Sie sie vonHier
- wenn Sie keinen SSH-Schlüssel haben, starten Sie Puttygen und:
- wenn bereits ein Linux-generierter Schlüssel vorhanden ist:
- Wählen Sie „Eine vorhandene private Schlüsseldatei laden“
- entsprechende Datei auswählen (Dateierweiterungsfilter muss geändert werden)
- Passphrase einfügen
- Wählen Sie „Privaten Schlüssel speichern“
- anders,
- Wählen Sie „Schlüssel generieren“
- Maus nach dem Zufallsprinzip bewegen
- Wählen Sie „Privaten Schlüssel speichern“
- Wählen Sie „Öffentlichen Schlüssel speichern“
- wenn bereits ein Linux-generierter Schlüssel vorhanden ist:
- Senden Sie Ihrem Systemadministrator den ÖFFENTLICHEN SCHLÜSSEL, nicht den privaten Schlüssel! (Systemadministratoren: lesen Sie weiter unten)
- Führen Sie eine Windows-Eingabeaufforderung aus (Start > Ausführen und geben Sie „cmd“ ein) und starten Sie „pageant.exe“.
- Rechtsklick auf das Icon in der Iconleiste, „Schlüssel hinzufügen“
- Wählen Sie Ihren zuvor gespeicherten privaten Schlüssel aus und geben Sie die Passphrase ein
Startkitt
- in Hostname setzen Sie: die IP-Adresse Ihres Repository-Servers
- Sitzung speichern unter "
remote-dev
" (jeder Name ist ok) - gehe zu Verbindung > Proxy
- Wählen Sie „lokal“ als Proxy-Typ
- Proxy-Hostname: Ihr Firewall-DNS-Eintrag oder Ihre IP-Adresse
- Port:
22
(oder was auch immer für den SSH-Zugriff auf die Firewall geeignet ist) - Benutzername:
hg
(oder welcher Benutzer auch immer auf der Firewall Ihren öffentlichen SSH-Schlüssel in .ssh/authorized_files hat) - 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). - gehe zu Verbindung > Daten
- Benutzername für automatische Anmeldung: hg (oder welcher Benutzer auch immer auf dem Repository-Server hg-gateway ausführt)
- zurück zur „Sitzung“
- Klicken Sie auf „Speichern“, um die Sitzung zu speichern
- Klicken Sie auf „Öffnen“.
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:
jetzt herunterladen & installierenschildkröte
- Starten Sie die Tortoisehg-Werkbank
- Datei > Repository klonen
- Quelle: ssh://
remote-dev
/repo-name
(Remote-Dev muss mit dem übereinstimmen, wie Sie Ihre Sitzung in Putty aufgerufen haben!) - Ziel: Wählen Sie Ihr lokales Ziel
- Klicken Sie auf „Klonen“.
- das ist es.
So gewähren Sie einem Benutzer Zugriff auf das Remote-Repository:
- Fügen Sie den öffentlichen SSH-Schlüssel
.ssh/authorized_keys
des Benutzershg
auf der Firewall hinzu - verwenden
hg-gateway
, um den Schlüssel dieses Benutzers demhg
Benutzer 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:
- auf der Firewall gibt es einen Benutzer namens '
hg
', dessen.ssh/autorhized_keys
Datei die öffentlichen Schlüssel aller Benutzer enthält, die auf das Repository zugreifen müssen 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
'.