3

Я хочу создать ключ ssh (без пароля), который я мог бы раздать удаленным пользователям, чтобы они могли выполнять hg pull или hg clone моих репозиториев. Я дошел до создания ключа ssh, который использует только команду /usr /bin /hg, но он не работает при использовании команд clone или pull, потому что строка команды не совпадает с тем, что удаленный вызов команды mercurial использует внутренне.

Можно ли получить команды, которые Mercurial выполняет на удаленном хосте, когда вы делаете:

hg clone ssh://user@host//path-to-repo
hg pull ssh://user@host//path-to-repo

И могу ли я надежно придумать пару командных строк, которые охватят все мои базы? Если бы они собирались вытащить с определенной ревизией, будет ли это использовать другую удаленную команду через ssh?

3 ответа3

5

Mercurial поставляется с удобным скриптом, уже настроенным именно для такого рода ограниченного доступа. Сценарий, вероятно, уже находится на вашем сервере и называется hg-ssh, но вы также можете найти его здесь: http://www.selenic.com/repo/hg-stable/raw-file/tip/contrib/hg-ssh

Чтобы использовать его, просто поместите такую строку в ваш файл /home/user/.ssh/authorized_keys :

command="hg-ssh path/to/repo1 /path/to/repo2 ~/repo3 ~user/repo4" ssh-dss ...

это гарантирует, что люди с этим ключом могут использовать только Mercurial (не оболочку) и только в репозиториях, которые вы перечислите.

2

Поэтому, если вы не хотите, чтобы они давили, то я рекомендую использовать опцию --read-only для команды hg-ssh в дополнение к ответу Ry4an.

0

Зарегистрируйтесь в Bitbucket и клонируйте в него свой репозиторий.

Затем вы можете создавать ключи развертывания и распространять их среди своих пользователей.

Кроме того, попросите пользователей подписаться на Bitbucket и предоставьте им разрешение только на чтение. Затем они могут получить доступ к хранилищу с помощью https или ssh, если загрузят свой открытый ключ.

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