Заодно вы дали мне интересную идею…
Пользователь добавил сообщение 12 Октября 2017, 00:29:10:
Хмык. Получилось.
nano /etc/ssh/sshd_config
AuthorizedKeysFile /etc/ssh/pubkeys/%u %h/.ssh/authorized_keys
sshd -T && initctl restart ssh
KEYSDIR=/etc/ssh/pubkeys
mkdir "$KEYSDIR"
getent group www-data | while IFS=: read -r _n _ _gid _; do
getent passwd | while IFS=: read -r _n _ _u _g _ _h _; do
if [ "$_u" -gt 999 ] && [ "$_g" = "$_gid" ] && [ -f "$_h/.ssh/authorized_keys" ] && [ ! -e "$KEYSDIR/$_n" ]; then
(
set -e
cp "$_h/.ssh/authorized_keys" "$KEYSDIR/$_n"
chown "$_u" "$KEYSDIR/$_n"
ln -fs "$KEYSDIR/$_n" "$_h/.ssh/authorized_keys"
)
break
fi
done
done
Пользователь добавил сообщение 12 Октября 2017, 01:22:42:
Немного бэкграунда.
Сервер используется для разработки вебсайтов, каждый сайт - отдельный пользователь, со своей домашкой, скриптами и прочим.
Собственно разработка ведётся через самба шару под совсем другим пользователем.
Соответственно, права на домашку никак SSH не устраивают; чтобы подключиться по SSH, приходится прибегать к разнообразным извращениям. Приходилось… как-то я раньше не сообразил, что ситуация подпадает под случай "домашний каталог в нестандартном формате" и решение вполне может быть тем же.
Добавил первым каталогом поиска ключей отдельный выделенный каталог, в котором по именам пользователей лежат списки доступных ключей. Списки chown $USER, так что владелец может их менять, плюс симлинки в ~/.ssh/authorized_keys для облегчения доступа.
Так что я наконец-то могу тестировать деплой без извращений.
Пользователь добавил сообщение 12 Октября 2017, 02:53:19:
Polished and published.