Доступ к удаленному репозиторию Mercurial через прокси-сервер SSH в Windows с помощью Tortoisehg

Доступ к удаленному репозиторию Mercurial через прокси-сервер SSH в Windows с помощью Tortoisehg

У меня есть удаленный репозиторий mercurial (управляемый hg-gateway) на сервере. Доступ к этому серверу закрыт для широкой публики; однако брандмауэр разрешает проксирование ssh.

Как настроить клиент Windows для доступа к этому репозиторию с помощью tortoisehg?

Обратите внимание, что это отличается отэтот, так как в этом вопросе нет проксирования. Я ищу эквивалент Windows

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

для доступа к репозиторию Mercurial, например

hg clone ssh://remote-dev/repo

Я нашел работающее решение и опубликую его ниже в ответах на благо сообщества.

решение1

Предположения по системному администрированию приведены в конце этой статьи.

  1. загрузите и установите putty, plink, pageant и puttygen с сайтаздесь
  2. если у вас нет ключа SSH, запустите puttygen и:
    1. если у вас уже есть ключ, сгенерированный Linux:
      1. выберите «загрузить существующий файл закрытого ключа»
      2. выберите соответствующий файл (необходимо изменить фильтр расширения файла)
      3. вставьте парольную фразу
      4. выберите «сохранить закрытый ключ»
    2. еще,
      1. выберите «сгенерировать ключ»
      2. перемещайте мышь в случайном порядке
      3. выберите «сохранить закрытый ключ»
      4. выберите «сохранить открытый ключ»
  3. отправьте вашему системному администратору ОТКРЫТЫЙ КЛЮЧ, а не закрытый ключ! (системные администраторы: читайте ниже)
  4. запустите командную строку Windows (Пуск > Выполнить и введите «cmd») и запустите «pageant.exe»
  5. щелкните правой кнопкой мыши по значку на панели значков, «добавить ключ»
  6. выберите свой ЧАСТНЫЙ ключ, который вы сохранили ранее, введите парольную фразу
  7. запустить шпатлевку

    1. в hostname введите: IP-адрес вашего сервера репозитория
    2. сохранить сессию как ' remote-dev' (любое имя допустимо)
    3. перейти к подключению > прокси
    4. выберите «локальный» для типа прокси-сервера
    5. имя хоста прокси: запись DNS вашего брандмауэра или IP-адрес
    6. порт: 22(или любой другой подходящий для подключения по ssh к брандмауэру)
    7. имя пользователя: hg(или любой другой пользователь на брандмауэре, у которого есть ваш открытый ключ SSH в .ssh/authorized_files)
    8. в «команда telnet или локальный прокси» замените содержимое на « FULLPATH\plink.exe -v -nc %host:%port %user@%proxyhost» (обратите внимание, используйте ПОЛНЫЙ путь к исполняемому файлу plink.exe, например c:\plink.exe)
    9. перейти к подключению > данные
    10. имя пользователя для автоматического входа: hg (или любой другой пользователь на сервере репозитория, у которого запущен hg-gateway)
    11. вернуться к «сеансу»
    12. нажмите «сохранить», чтобы сохранить сеанс
    13. нажмите «открыть»
    14. вы должны увидеть что-то вроде

      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. сейчас скачайте и установитечерепахаhg

  9. запустить tortoisehg workbench
  10. файл > клонировать репозиторий
  11. источник: ssh:// remote-dev/ repo-name(remote-dev должен соответствовать тому, как вы назвали свой сеанс в putty!)
  12. пункт назначения: выберите местный пункт назначения
  13. нажмите «клонировать»
  14. вот и все.

Чтобы разрешить пользователю доступ к удаленному репозиторию:

  1. добавьте открытый ключ SSH для .ssh/authorized_keysпользователя hgна брандмауэре
  2. используйте hg-gatewayдля добавления ключа этого пользователя к hgпользователю на сервере

Примечание: putty имеет тенденцию генерировать ключи в формате .ppk; их нужно преобразовать в однострочный ssh-ключ. Google вам в этом друг.

Предположения:

  1. на брандмауэре есть пользователь с именем ' hg', файл которого .ssh/autorhized_keysсодержит открытые ключи всех пользователей, которые должны получить доступ к репозиторию
  2. файл /etc/ssh/sshd_config брандмауэра содержит строку, похожую на:

    Match Group dev
        ForceCommand nc -q0 reposerver_ip 22
    

    так что пользователь НЕ МОЖЕТ указать, к каким хостам подключаться. Пользователь ' hg' очевидно принадлежит к группе unix ' dev'.

Связанный контент