Установка git-репозитория на роутер Asus WL-500gp V2
26 Сентября 2011
Вместо введенияПредпологается, что у вас на роутере установлена прошивка от Олега и уже настроен ssh-демон, а также установлен менеджер пакетов ipkg. Если нет, то инструкцию по установке и настройке можно найти здесь. УстановкаДалее мы рассмотрим развертывание git репозитория на роутере Asus WL-500gp V2 с доступом по ssh (авторизация по публичному ключу опциональна). 1. Установка git
ipkg install git
Менеджер пакетов установит все необходимые утилиты. 2 Создание пользователя под репозитории. Перейдите к пункту 2.1 или 2.2 в зависимости от желаемого способа авторизации. 2.1 Авторизацией с помощью пароля. Для создания можно воспользоваться утилитой adduser (ipkg install adduser)
adduser -h /opt/home/git -s /opt/bin/git-shell git
Где, 2.2. Авторизацией с помощью публичного ключа. (С возможностью создания публичного SSH-ключа можно ознакомиться здесь) Для авторизироваться с помощью публичного ключа, к комманде adduser должен быть добавлен ключ -D (Do not assign a password).
adduser -D -h /opt/home/git -s /opt/bin/git-shell git
Создадим файл authorized_keys в котором будут находиться публичные ключи:
su git -s /bin/sh
cd ~ mkdir ./.ssh touch ./.ssh/authorized_keys exit Советую не пользоваться nano (у меня побило ключ), а скопировать файл ключа со своего компьютера и затем добавить его в authorized_keys, например, так:
scp id_rsa.pub admin@192.168.0.1:/opt/home/git/
Затем в роутере от админа:
cat /opt/home/git/id_rsa.pub >> /opt/home/git/.ssh/authorized_keys
rm /opt/home/git/id_rsa.pub Если при авторизации вы получили ошибку server refused our key, возможно ключ записан неправильно или система не может запустить шелл для данного пользователя (git-shell требует некоторых настроек, см. ниже). Подробнее об ошибке можно узнать из логов:
cat /tmp/syslog.log | grep dropbear | tail
3. Настройка git-shell. Создадим директорию git-shell-commands и установим права на чтение и выполнение (например, 755).
mkdir /opt/home/git/git-shell-commands
chmod 0755 /opt/home/git/git-shell-commands Если не создать эту директорию или не установить правильно права, git-shell будет выдавать ошибку:
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access. Но это еще не все, если вы сейчас попробуете подключиться через ssh под пользователем git, то вам это не удасться, а в логах вы увидите
'git' has invalid shell, rejected
Чтобы это исправить нужно добавить git-shell в список правильных (valid) шеллов. Создадим файл /etc/shells (если не создан) и отредактируем его следующим образом:
/bin/sh
/sbin/nologin /opt/bin/git-shell Напомню, что для того чтобы изменения в файловой системе роутера сохранились и не пропали после перезагрузки, нужно выполнить следующие команды
flashfs save && flashfs commit && flashfs enable
4. Создание репозитория. Переключимся на пользователя git
su git -s /bin/sh
и создадим репозиторий
cd ~
mkdir ./ourproject.git cd ./ourproject.git git --bare init Это всё. Теперь можно "толкнуть" изменения:
git remote add origin ssh://git@192.168.1.1/~/ourproject.git
git push origin master Клонирование репозитория:
git clone ssh://git@192.168.1.1/opt/home/git/ourproject.git
или
git clone ssh://git@192.168.1.1/~/ourproject.git
|
Авторизация
![]() |