2013-12-19 5 views
3

У нас есть «мастер» Mercurial-сервер в нашей сети, который мы используем для локального промежуточного блока. Наша команда делает все наши усилия и тянет в/из этой коробки. У меня возникают проблемы с реализацией, которую я использую, но я также предпочел, чтобы сделать то, что я хочу сделать, даже хорошая идея ...Mercurial: Как поместить крючок в битбакет?

Мы также хотим начать использовать BitBucket, но только как вторичный сервер. Я хотел бы использовать крюк, чтобы автоматически толчок к Bitbucket, но я не могу заставить его работать правильно ...

Вот HGRC от «главного» репо:

[hooks] 
changegroup = 
changegroup.update = hg update 
changegroup.bitbucket = hg push ssh://[email protected]/account/repo 

Если я вручную сгорите вышеуказанный толчок, все работает отлично. Однако, как крючок он не:

warning: changegroup.bitbucket hook exited with status 255

Я последовал за это руководство, чтобы получить SSH работу: Set up SSH for Git and Mercurial on Mac OSX/Linux

Я получаю мои ключи генерируются, я бегу ssh-agent, и я ssh-add ключ. Но ssh-agent, похоже, ничего не делает, и как только я выхожу из сеанса SSH, похоже, он оставляет память. Кроме того, когда я тестирую его с помощью ssh -Tv [email protected], он запрашивает мой пароль. Я думал, что все дело в том, чтобы это не делать этого?

Но, сделав шаг назад, возможно, это ужасная идея быть с. Если я дам свой открытый ключ Битбакет, теоретически это не означало бы, если бы кто-то ухватился за него, они могли бы SSH войти в мой бокс без пароля?

И если да, то какой альтернативой я должен переслать, то есть битбакет? Я бы предпочел не использовать HTTPS, потому что это потребовало бы, чтобы наш пароль bitbucket был простым или текстовым в файле .hg/hgrc ...

Может быть, есть еще один очевидный способ сделать это, что мне не хватает? Для разработчиков я предпочел бы хранить вещи так, как они есть сейчас (каждый нажимает на мастер) вместо того, чтобы переконфигурировать каждый ящик для разработчиков, чтобы иметь закрытый ключ и нажать на битбакет вместо этого ...

Как всегда, спасибо за любая помощь, которую вы, ребята, можете предоставить.

+0

Вы когда-нибудь слышали о [настройке SSH] (https://en.wikipedia.org/wiki/Ssh_tunnel#Secure_shell_tunneling)? OpenVPN? – user2284570

+0

У меня есть, но я не уверен, как или помочь с моей проблемой. Здесь нет проблем с брандмауэром или VPN ... Не могли бы вы продумать? – DOOManiac

+0

Если вы получите доступ к своему ртутному репозиторию через VPN, он будет зашифрован. – user2284570

ответ

2

Woah, вопросов много. Я нажму несколько из них:

Но ssh-agent, похоже, ничего не делает, и как только я выхожу из сеанса SSH, кажется, что он оставляет память.

Вы правы. ssh-agent предназначен для интерактивных сеансов, а не для автоматизации. В большинстве случаев, когда вы выходите из системы, он убит, но даже если это не так, он не будет работать, как вы себе представляете, потому что, когда кто-то делает это, hg push, они запускают новый, неинтерактивный сеанс, который не был бы доступ к ssh-agent в любом случае

Кроме того, когда я тестирую его с помощью ssh -Tv [email protected], он запрашивает мой пароль.

Тестирование, как это недействительно. Это говорит: «Я хочу войти в интерактивный сеанс на битбакете с именем пользователя hg», но это не то, что они разрешают вам делать.Если вы отправляете им свой открытый ключ, они позволяют вам войти в систему как пользователь hg только для целей выполнения неинтерактивных команд hg.

Кроме того, когда я тестирую его с помощью ssh -Tv [email protected], он запрашивает мой пароль.

Нет, открытые ключи должны быть общедоступными - например, вы можете перечислить кого-нибудь на github. Открытый ключ просто говорит: «Любой, у кого есть закрытый ключ, который соответствует этому, разрешен ...», поэтому любой сайт, который хочет получить ваш закрытый ключ, - это crooks, но любой сайт, который хочет вас открыть, просто предлагает вам способ использования что-то лучше, чем пароль.

Одна вещь, которую вы можете упускать из-за крючков, - это «кто», как работает крючок. Когда люди нажимают на ваше «центральное» репо над ssh, что крюк запускается как его пользователь unix, и если они нажимают на http, то крючок запускается как пользователь веб-сервера.

Если вы имели:

  • секретный ключ SSH без пароля на нем
  • согласование с открытым ключом, что частный ключ установки на BitBucket
  • пользователь Unix работает крюк, используя что закрытый ключ доступ к bitbucket.org

тогда то, что вы пытаетесь сделать, будет работать.

+0

«Когда люди нажимают на ваше« центральное »репо над ssh, что крюк запускается как их пользователь unix» - вот в чем проблема! Ни у кого из нас нет отдельных учетных записей пользователей Linux. Является ли частный SSH-ключ без пароля? – DOOManiac

+0

«безопасный» относительный. Закрытый ключ без пароля означает, что любой, кто обнаружит этот файл (или его ноутбук), может получить доступ к учетной записи. Если это будет безопасно для вас (и в некоторых контекстах это будет), это ваш ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^