Мы используем CentOS 6.9 с OpenSSH_5.3p1 и создали chrooted-аккаунты для внешних пользователей с тем же домашним каталогом (примонтированным к htdocs). Проблема в том, что файл .ssh/authorized_keys2
принадлежит первому пользователю (и это уже работает). Как мне заставить его работать для другого пользователя?
Я попытался добавить AuthorizedKeysFile
в sshd_config несколько путей к файлам и получил ошибку garbage at end of line
.
Я попытался добавить AuthorizedKeysFile
in sshd_config
в блок соответствия второго пользователя и получил ошибку 'AuthorizedKeysFile' is not allowed within a Match block
.
Я не могу изменить домашний каталог, потому что в противном случае путь будет отличаться от реального пути разработки.
Есть предложения, как это решить? Может, мне придется обновить OpenSSH до более новой версии, которая поддерживает несколько записей AuthorizedKeysFile
(я думаю, мне придется собрать ее с помощью rpm)? Что насчет обновлений безопасности после этого?
решение1
Одним из вариантов является использование токенов для предоставления каждому пользователю уникального authorized_keys
файла.
AuthorizedKeysFile
Указывает файл, содержащий открытые ключи, которые могут использоваться для аутентификации пользователя. Формат описан в разделе ФОРМАТ ФАЙЛА AUTHORIZED_KEYS в
sshd(8)
.AuthorizedKeysFile
может содержать токены формы%T
, которые подставляются при настройке соединения. Определены следующие токены:%%
заменяется литералом%
,%h
заменяется домашним каталогом аутентифицируемого пользователя и%u
заменяется именем пользователя этого пользователя. После расширенияAuthorizedKeysFile
принимается как абсолютный путь или путь относительно домашнего каталога пользователя. Можно перечислить несколько файлов, разделенных пробелом. В качестве альтернативы этот параметр может быть установлен наnone
пропуск проверки ключей пользователя в файлах. Значение по умолчанию —.ssh/authorized_keys .ssh/authorized_keys2
.
Выделено мной.
Итак, вы можете установить:
AuthorizedKeysFile .ssh/%u_authorized_keys
Затем для пользователя foo
создайте authorized_keys
файл .ssh/foo_authorized_keys
.
Примечание о разрешениях
Отчеловек sshd:
~/.ssh/authorized_keys
...
Если этот файл, каталог~/.ssh
или домашний каталог пользователя доступны для записи другим пользователям, то файл может быть изменен или заменен неавторизованными пользователями. В этом случае sshd не позволит использовать его, если только опция неStrictModes
установлена в значениеno
.
Поэтому вам может потребоваться вынести ключи наружу .ssh/
или установить StrictModes
на no
. Если вы установите, StrictModes
чтобы no
убедиться, что другой пользователь не сможет создать authorized_keys
для кого-то другого, или удалите авторизованные ключи другого пользователя. Вероятно, лучше всего сделать что-то вроде:
AuthorizedKeysFile .ssh_%u/authorized_keys
Создайте каталог .ssh_foo/
для пользователя foo
, который может только foo
читать/писать.
Вы можете выбрать, хотите ли вы также разрешить, .ssh/authorized_keys
используя
AuthorizedKeysFile .ssh/authorized_keys .ssh_%u/authorized_keys
Это позволит "нормальной" форме authorized_keys
по-прежнему работать, а authorized_keys
файл должен принадлежать вашему пользователю и иметь правильные разрешения, иначе он будет проигнорирован. Тем не менее, учтите, что не должно быть возможности создать authorized_keys
файл для другого пользователя, что может означать просто касание файла как root, чтобы он был пуст.