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

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

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 (не оболочку) и только в репозиториях, которые вы перечислите.

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

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

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

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

Другие вопросы по тегам