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

4092
lorenzog

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

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

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

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

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

hg clone ssh://remote-dev/repo 

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

2

1 ответ на вопрос

4
lorenzog

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

  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'.

Каждый шаг в вашем ответе работает нормально - можете ли вы помочь мне понять, что вы пытаетесь сказать в строке `на брандмауэре 1. Используйте hg-gateway, чтобы добавить ключ этого пользователя к пользователю hg на сервере` yellowandred 5 лет назад 0
@yellowandred именно это - `hg-gateway` позволяет вам добавить открытый SSH-ключ к соответствующему пользователю, так что пользователь A может извлечь только из репозитория, для которого он авторизован lorenzog 5 лет назад 0

Похожие вопросы