
У меня есть удаленный репозиторий 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
Предположения по системному администрированию приведены в конце этой статьи.
- загрузите и установите putty, plink, pageant и puttygen с сайтаздесь
- если у вас нет ключа SSH, запустите puttygen и:
- если у вас уже есть ключ, сгенерированный Linux:
- выберите «загрузить существующий файл закрытого ключа»
- выберите соответствующий файл (необходимо изменить фильтр расширения файла)
- вставьте парольную фразу
- выберите «сохранить закрытый ключ»
- еще,
- выберите «сгенерировать ключ»
- перемещайте мышь в случайном порядке
- выберите «сохранить закрытый ключ»
- выберите «сохранить открытый ключ»
- если у вас уже есть ключ, сгенерированный Linux:
- отправьте вашему системному администратору ОТКРЫТЫЙ КЛЮЧ, а не закрытый ключ! (системные администраторы: читайте ниже)
- запустите командную строку Windows (Пуск > Выполнить и введите «cmd») и запустите «pageant.exe»
- щелкните правой кнопкой мыши по значку на панели значков, «добавить ключ»
- выберите свой ЧАСТНЫЙ ключ, который вы сохранили ранее, введите парольную фразу
запустить шпатлевку
- в hostname введите: IP-адрес вашего сервера репозитория
- сохранить сессию как '
remote-dev
' (любое имя допустимо) - перейти к подключению > прокси
- выберите «локальный» для типа прокси-сервера
- имя хоста прокси: запись DNS вашего брандмауэра или IP-адрес
- порт:
22
(или любой другой подходящий для подключения по ssh к брандмауэру) - имя пользователя:
hg
(или любой другой пользователь на брандмауэре, у которого есть ваш открытый ключ SSH в .ssh/authorized_files) - в «команда telnet или локальный прокси» замените содержимое на «
FULLPATH\plink.exe -v -nc %host:%port %user@%proxyhost
» (обратите внимание, используйте ПОЛНЫЙ путь к исполняемому файлу plink.exe, например c:\plink.exe) - перейти к подключению > данные
- имя пользователя для автоматического входа: hg (или любой другой пользователь на сервере репозитория, у которого запущен hg-gateway)
- вернуться к «сеансу»
- нажмите «сохранить», чтобы сохранить сеанс
- нажмите «открыть»
вы должны увидеть что-то вроде
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:
сейчас скачайте и установитечерепахаhg
- запустить tortoisehg workbench
- файл > клонировать репозиторий
- источник: ssh://
remote-dev
/repo-name
(remote-dev должен соответствовать тому, как вы назвали свой сеанс в putty!) - пункт назначения: выберите местный пункт назначения
- нажмите «клонировать»
- вот и все.
Чтобы разрешить пользователю доступ к удаленному репозиторию:
- добавьте открытый ключ SSH для
.ssh/authorized_keys
пользователяhg
на брандмауэре - используйте
hg-gateway
для добавления ключа этого пользователя кhg
пользователю на сервере
Примечание: putty имеет тенденцию генерировать ключи в формате .ppk; их нужно преобразовать в однострочный ssh-ключ. Google вам в этом друг.
Предположения:
- на брандмауэре есть пользователь с именем '
hg
', файл которого.ssh/autorhized_keys
содержит открытые ключи всех пользователей, которые должны получить доступ к репозиторию файл /etc/ssh/sshd_config брандмауэра содержит строку, похожую на:
Match Group dev ForceCommand nc -q0 reposerver_ip 22
так что пользователь НЕ МОЖЕТ указать, к каким хостам подключаться. Пользователь '
hg
' очевидно принадлежит к группе unix 'dev
'.