Доступ к удаленному ртутному репозиторию через 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 ответ
Допущения системного администрирования приведены в конце этого поста.
- скачать и установить putty, plink, театрализованное представление и 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) - перейти к соединению> данные
- авто-логин username: hg (или любой другой пользователь на сервере хранилища имеет запущенный hg-шлюз)
- вернуться к "сессии"
- нажмите "сохранить", чтобы сохранить сеанс
- нажмите "открыть"
вы должны увидеть что-то вроде
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:
Теперь скачайте и установите Tortoisehg
- запустить рабочий стол с черепахой
- файл> хранилище клонов
- источник: ssh: //
remote-dev
/repo-name
(remote-dev должен соответствовать тому, что вы называли сессией в putty!) - пункт назначения: выберите пункт назначения
- нажмите "клон"
- вот и все.
Чтобы разрешить пользователю доступ к удаленному репо:
- добавить открытый ключ ssh к
.ssh/authorized_keys
пользователяhg
на брандмауэре - использование
hg-gateway
добавить ключ этого пользователя вhg
пользователь на сервере
Примечание: замазка имеет тенденцию генерировать ключи в формате.ppk; они должны быть преобразованы в однострочный ключ ssh. Google твой друг здесь.
Предположения:
- на брандмауэре есть пользователь с именем "
hg
' чья.ssh/autorhized_keys
файл содержит открытые ключи всех пользователей, которые должны иметь доступ к хранилищу файл /etc/ssh/sshd_config брандмауэра содержит строку, похожую на:
Match Group dev ForceCommand nc -q0 reposerver_ip 22
так что пользователь не может указать, к каким хостам подключаться. Пользователь '
hg
"очевидно, принадлежит к группе Unix"dev
".