我正在使用Ubuntu 12.04在一个新的Web LEMP服务器上设置安全用户的艰难和痛苦的过程。 我最初是要设置一些像vsftpd或proftpd,但许多人build议只是直接使用SFTP,所以我会。 最终,我有一个主要用户(我只是为了防止根login)。 我创build了这个新用户,生成一个公钥对,以authorized_key上传公钥到~/.ssh目录,修改了SSH端口号,删除了root用户login,并且设置了passwordauthentication为NO,强制用户他/她的钥匙login。足够简单(虽然在PC上工作似乎比我的OSX / NIX的同行更为头疼)。
我现在正在尝试创build新的用户(对于我的Web开发人员),他们只需访问SFTP并将他们的暴露限制在他们的Web目录中。 每个目录具有以下格式:
/var/www/sitename.com/public/
我现在开始头痛。 创build一个新用户? 简单。 添encryption码? 真的不需要给我需要公共/私人密钥(他们将永远不会sudo访问),但确定。 然而,我正在努力与以下几点:
authorized_keys文件,它将具有root用户和组权限,并且无法login到服务器。 同样,这些新用户无法login和创build它自己,呃,因为他们不允许通过密码login。 (注意:我也在设置sftp并将它们限制在各自的web目录中,但我认为我可以在后来自己解决这个问题)。
有什么build议?
目前的过程是这样的:
#sudo mkdir -p /home/newuser/.ssh #sudo nano /home/newuser/.ssh/authorized_key #(将密钥复制到单行并保存) #chown -R新用户: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
为了使这个过程更简单,可重复和可审计,使用configurationpipe理系统进行用户pipe理。 所有广泛使用的configurationpipe理系统(puppet,chef,ansible等)都具有创build用户和部署密钥的能力。 使用configurationpipe理系统的一个巨大的附加好处是,你也可以保持你的configuration在源代码pipe理。
我如何实际将这个新用户的公钥存储在服务器上? 如果我以root用户身份login,只需在其主目录中创buildauthorized_keys文件,它将具有root用户和组权限,并且无法login到服务器。
使用他们提供的公共密钥为他们创build。 适当地播放它。 适当地修改它。 完成。