Доступ к удаленному ртутному репозиторию через ssh-прокси под windows с tortoisehg

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

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

Обратите внимание, что это отличается от этого, так как в этом вопросе не задействовано проксирование. Я ищу окна, эквивалентные

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

для доступа к ртутному репо, как

hg clone ssh://remote-dev/repo

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

1 ответ

Решение

Допущения системного администрирования приведены в конце этого поста.

  1. скачать и установить putty, plink, театрализованное представление и 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. авто-логин username: hg (или любой другой пользователь на сервере хранилища имеет запущенный hg-шлюз)
    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. Теперь скачайте и установите Tortoisehg

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

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

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

Примечание: замазка имеет тенденцию генерировать ключи в формате.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".

Другие вопросы по тегам