2

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

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

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

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

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

hg clone ssh://remote-dev/repo

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

1 ответ1

4

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

  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. username: 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-шлюз)
    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. source: 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 '.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .