Я искал способ ограничить доступ к частному репозиторию Debian и иметь возможность аутентифицироваться в нем неинтерактивно (т.е. используя скрипт)
Самая полезная статья, которую я нашел, если на самом деле одна из Сайт администрирования Debian но безопасный метод использует ssh и открытые / закрытые ключи. Он отлично работает, но для успешной аутентификации открытый ключ каждого хоста должен находиться внутри удаленного файла authorized_keys. В нем ничего не говорится о предоставлении пароля ssh: //, но я полагаю, что это должно быть возможно.
Вы пробовали другие альтернативы (например, ftps)?
заранее спасибо
Если ты всегда бежишь apt-get
на ваших серверах вручную (без автоматического apt-get
команды, запущенные crons), то вы можете рассмотреть возможность использования пересылка агента ssh. Это позволяет избежать необходимости управлять одной парой открытых / закрытых ключей для каждого сервера, которым вы управляете, и, вероятно, это безопаснее, чем оставлять закрытые ключи на каждом сервере.
Начальная конфигурация - подключитесь к серверам, которыми хотите управлять, и добавьте что-то подобное в /etc/apt/sources.list
(в этом примере предполагается, что вы хотите, чтобы ваши серверы подключались к manager
учетная запись):
deb ssh://manager@my.repository.org/path other stuff
создать пару приватных / публичных ключей на вашем компьютере с вашим логином johndoe
например (при условии, что ваш компьютер работает под управлением debian: если нет, вы можете сделать это с сервера debian, выделенного для управления):
ssh-keygen
скопируйте свой открытый ключ на сервер репозитория в /home/manager/.ssh/authorized_keys
:
ssh-copy-id manager@my.repository.org
Один раз за сеанс управления
запустите агент ssh на вашем компьютере, набрав:
eval `ssh-agent`
добавьте свой ключ к агенту (для этого потребуется ваша кодовая фраза):
ssh-add
Управление сервером
подключитесь к серверу, которым хотите управлять, используя ssh -A
(-A
активирует переадресацию агента):
ssh -A some.server.org
переключитесь на root (если вы хотите использовать sudo
вам нужно настроить /etc/sudoers
или иначе sudo
нарушит пересылку агента, прочитайте это):
su
Теперь вы должны иметь возможность подключиться к учетной записи менеджера репозитория с помощью ssh без повторного ввода пароля, благодаря переадресации агента. Следовательно, apt-get
должно работать нормально:
apt-get udate
Завершение сеанса управления
Когда вы закончите управлять своими серверами, удалите ключи из агента:
ssh-add -D
Преимущества
ssh-ask
чтобы принять / отклонить каждую попытку использовать ваш ключ.Один из способов сделать это - просто разрешить определенному набору IP-адресов доступ к репозиторию. Это очень хорошо работает для LAN и VPN.
Просто и эффективно.
Решение с открытыми / закрытыми ключами ssh + не который плохой:
ssh-keygen
, затем ssh-copy-id your_login@your.repository.org
редактировать /etc/apt/sources.list
и добавьте что-то вроде:
deb ssh://your_login@your.repository.org/path other stuff
Конечно, это требует, чтобы вы поместили открытый ключ каждого сервера в ~/.ssh/authorized_keys
файл на сервере, но это не так сложно (см. выше), и он дает вам контроль над тем, какие серверы вы разрешаете или не разрешаете в любой момент времени (вы можете удалить ключ в любое время в authorized_keys
).
Вы можете настроить https-доступ к своему репозиторию, защищенный логином / паролем (базовая аутентификация). Проблема в том, что нужно ввести логин / пароль в открытом виде в /etc/apt/sources.list
(нота: есть патч чтобы разрешить ввод логина / пароля /root/.netrc
вместо).
Ссылка в вашем вопросе показывает несколько методов. Вам нужен номер 2, https + базовая аутентификация.