Создание ssh-ключа только для ртутных пулов / клонов

4090
goathens

Я хочу создать ключ 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
Ry4an Brase

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
Takayuki SHIMIZUKAWA

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

0
Alasdair

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

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

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

Это было изменено на - любое количество частных репозиториев. viraptor 13 лет назад 0

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