Вопрос: Есть ли более простой способ добавить аутентификацию с открытым ключом для новых пользователей?


Я нахожусь в трудном и болезненном процессе создания безопасных пользователей на новом веб-сервере LEMP с Ubuntu 12.04. Сначала я собирался настроить что-то вроде vsftpd или proftpd, но многие предложили просто использовать SFTP напрямую, поэтому я это сделаю. В конечном счете, у меня есть один основной пользователь (который я использую просто для предотвращения входа root). Я создал этого нового пользователя, сгенерировал пару с открытым ключом, загрузил открытый ключ пользователям ~/.ssh в качестве authorized_key, изменил номер порта SSH, удалил вход root и также установил passwordauthentication к НЕТ, поэтому пользователь вынужден использовать свой ключ для входа в систему. Достаточно легко (хотя работа на ПК, по-видимому, является гораздо большей головной болью для этого, чем мои аналоги OSX / NIX).

Теперь я пытаюсь создать новых пользователей (для моих веб-разработчиков), которые просто будут иметь доступ к SFTP и ограничивают их экспозицию просто веб-каталогом своего заряда. Каждый каталог имеет следующий формат:

/var/www/sitename.com/public/

Моя головная боль начинается сейчас. Создать нового пользователя? Легко. Добавить пароль? Мне не нужно давать, что мне требуются общедоступные / закрытые ключи (и у них никогда не будет доступа к sudo), но нормально. Однако я борюсь со следующим:

  • Как я могу хранить открытый ключ этого нового пользователя на сервере? Если я вхожу в систему как пользователь root и просто создаю authorized_keys файл в своем домашнем каталоге, у него будут права владельца root и группы, и они не смогут войти на сервер. Similary, эти новые пользователи не могут войти в систему и сами создать ее, ну, потому что им не разрешено входить по паролю.

(примечание: я также борюсь с настройкой sftp и ограничением их в своих соответствующих веб-каталогах, но я думаю, что смогу понять это позже самостоятельно).

Любой совет?

редактировать

В настоящее время процесс таков:

  • получить открытый ключ от человека
  • выполните следующие команды:
#sudo mkdir -p /home/newuser/.ssh
#sudo nano /home/newuser/.ssh/authorized_key
# (копировать ключ в одну строку и сохранять)
#chown -R newuser: newuser / home / newuser
#chmod 700 /home/newuser/.ssh
#chmod 600 /home/newuser/.ssh/authorized_key

Я полагаю, это не совсем ужасно, но если у нас есть большое количество разработчиков (плюс количество времени, которое он собирается взять меня, чтобы настроить их с помощью SFTP-части и ограничить каталоги), это кажется огромной болью.


5
2018-03-07 00:50


Источник


Моя единственная рекомендация в вашем рабочем процессе: канава нано. :) - EEAA♦
@EEAA - почему ты так говоришь? Это так же быстро, как vi, и проще использовать IMO. - JM4
Подождите, пока вам придется выполнять более сложное редактирование ... тогда вам понадобится более удобный редактор. - EEAA♦
@EEAA - любые предложения попробовать? - JM4
Что ж, vi будет присутствовать на Любые unix, которую вы когда-либо касались, и это очень удобный редактор. Функциональность, получаемая от прохождения кривой обучения, стоит того, что требуется ... - EEAA♦


Ответы:


Вам необходимо изменить права собственности на файл и установить соответствующие разрешения.

$ chown -R newuser /path/to/home/.ssh
$ chmod 700 /path/to/home/.ssh
$ chmod 600 /path/to/home/.ssh/authorized_keys

Чтобы сделать этот процесс более простым, повторяемым и доступным для аудита, используйте систему управления конфигурацией для управления пользователями. Все широко используемые системы управления конфигурациями (марионеткой, шеф-поваром, надписью и т. Д.) Поставляются с возможностью создания пользователей и развертывания ключей. Огромное преимущество использования системы управления конфигурацией заключается в том, что вы также можете сохранить свою конфигурацию в исходном управлении.


10
2018-03-07 01:01



хе .. ты избил меня на 57 секунд, но также дал более подробный ответ, в котором вы приводили пример команд. для вас. оригинальному плакату, вероятно, также потребуется mkdir /home/$USER/.ssh, если он не существует и создать файл authorized_keys, но в принципе да. - Michael McNally
@MichaelMcNally - Я быстро, как кролик. :) - EEAA♦
@EEAA. Я хотел включить в свой первоначальный вопрос, но это именно то, что я сейчас делаю. Просто не знал, есть ли способ сделать это легче, поскольку есть другие шаги. - JM4
создайте скрипт, который проверяет наличие каталогов и, если не найден, создает их с соответствующими разрешениями и правами собственности. пишите один раз, запускайте много раз. - Michael McNally
Да, другой вопрос. :) - EEAA♦


Как я могу хранить открытый ключ этого нового пользователя на сервере? Если я вхожу в качестве пользователя root и просто создаю файл authorized_keys в своем домашнем каталоге, у него будут права владельца и группы, и они не смогут войти на сервер.

Создайте его для них, используя открытый ключ, который они предоставляют вам, когда запрашивают учетную запись. Прослушайте это правильно. Чмод это правильно. Готово.


1
2018-03-07 01:02





/home/newuser/.ssh/authorized_key

Остерегайтесь этой опечатки :)

это `authorized_keys '. Это расстроило меня, по крайней мере, полчаса.


0
2017-12-07 14:07