Я нахожусь в трудном и болезненном процессе настройки безопасных пользователей на новом веб-сервере LEMP с Ubuntu 12.04. Изначально я собирался установить что-то вроде vsftpd или proftpd, но многие предлагали просто использовать SFTP напрямую, так что я это сделаю. В конечном итоге у меня есть один основной пользователь (которого я использую просто для предотвращения входа в систему с правами root). Я создал этого нового пользователя, сгенерировал пару открытых ключей, загрузил открытый ключ пользователям ~/.ssh
каталог как authorized_key
, изменил номер порта SSH, удалил логин root, а также установил passwordauthentication
на НЕТ, чтобы пользователь был вынужден использовать свой ключ для входа в систему. Достаточно просто (хотя работа на ПК кажется для этого гораздо большей головной болью, чем мои аналоги OSX / NIX).
Теперь я пытаюсь создать новых пользователей (для моих веб-разработчиков), которые будут просто иметь доступ по SFTP и ограничивать их доступ только к веб-каталогу, который они оплачивают. Каждый каталог имеет следующий формат:
/var/www/sitename.com/public/
У меня сейчас начинается головная боль. Создать нового пользователя? Легко. Добавить пароль? На самом деле не нужно указывать, что мне нужны открытые / закрытые ключи (и у них никогда не будет доступа sudo), но хорошо. Однако я борюсь со следующим:
authorized_keys
файл в своем домашнем каталоге, у него будут права корневого владельца и группы, и они не смогут войти на сервер. Точно так же эти новые пользователи не могут войти и создать его сами, ну, да, потому что им не разрешено входить с помощью пароля.(примечание: я также борюсь с настройкой sftp и ограничиваю их соответствующими веб-каталогами, но я думаю, что смогу выяснить это позже самостоятельно).
Любой совет?
В настоящее время процесс таков:
#sudo mkdir -p /home/newuser/.ssh #sudo nano /home/newuser/.ssh/authorized_key #(copy key into single line and save) #chown -R newuser:newuser /home/newuser #chmod 700 /home/newuser/.ssh #chmod 600 /home/newuser/.ssh/authorized_key
Я полагаю, это не совсем ужасно, но если у нас есть большое количество разработчиков (плюс время, которое мне понадобится, чтобы настроить их с помощью части SFTP и ограничить каталоги), это кажется огромной болью.
Вам необходимо изменить владельца файла и установить соответствующие разрешения.
$ chown -R newuser /path/to/home/.ssh
$ chmod 700 /path/to/home/.ssh
$ chmod 600 /path/to/home/.ssh/authorized_keys
Чтобы сделать этот процесс более простым, повторяемым и контролируемым, используйте систему управления конфигурацией для управления пользователями. Все широко используемые системы управления конфигурациями (puppet, chef, ansible и т. Д.) Поставляются с возможностью создания пользователей и развертывания ключей. Огромным дополнительным преимуществом использования системы управления конфигурациями является то, что вы также можете сохранить свою конфигурацию в системе контроля версий.
Как мне на самом деле хранить открытый ключ ЭТОГО нового пользователя на сервере? Если я вхожу в систему как пользователь root и просто создаю файл authorized_keys в их домашнем каталоге, у него будут права root-владельца и группы, и они не смогут войти на сервер.
Создайте его для них, используя открытый ключ, который они предоставляют вам, когда запрашивают учетную запись. Ешьте это соответствующим образом. Chmod его соответствующим образом. Готово.
/home/newuser/.ssh/authorized_key
Остерегайтесь этой опечатки :)
это `authorized_keys '. Это расстраивало меня как минимум на полчаса.