有没有更简单的方法为新用户添加公钥认证?

JM4*_*JM4 5 linux ubuntu authentication ssh-keys ubuntu-12.04

我正在使用 Ubuntu 12.04 在新的 Web LEMP 服务器上设置安全用户,这是一项艰巨而痛苦的过程。我最初打算设置诸如 vsftpd 或 proftpd 之类的东西,但许多人建议直接使用 SFTP,所以我会这样做。最终,我有一个主要用户(我使用它只是为了防止 root 登录)。我创建了这个新用户,生成了一个公钥对,将公钥上传到用户~/.ssh目录中authorized_key,更改了 SSH 端口号,删除了 root 登录并设置passwordauthentication为 NO,因此用户被迫使用他/她的密钥登录in. 足够简单(尽管在 PC 上工作似乎比我的 OSX/NIX 同行更令人头疼)。

我现在正在尝试创建新用户(为我的 Web 开发人员),这些用户将只拥有 SFTP 访问权限,并将他们的暴露限制在他们负责的 Web 目录中。每个目录具有以下格式:

/var/www/sitename.com/public/
Run Code Online (Sandbox Code Playgroud)

我的头痛现在开始了。创建新用户?简单。添加密码?真的不需要考虑我需要公钥/私钥(而且他们永远不会有 sudo 访问权限)但是可以。然而,我正在努力解决以下问题:

  • 我如何在服务器上实际存储这个新用户的公钥?如果我以 root 用户身份登录并简单地authorized_keys在他们的主目录中创建文件,它将拥有 root 所有者和组权限,并且他们无法登录到服务器。类似地,这些新用户不能自己登录和创建它,嗯,呃,因为他们不允许通过密码登录。

(注意:我也在努力设置 sftp 并将它们限制在各自的 Web 目录中,但我想我以后可以自己解决这个问题)。

有什么建议吗?

编辑

目前流程是这样的:

  • 从个人获取公钥
  • 执行以下命令:
#sudo mkdir -p /home/newuser/.ssh
#sudo nano /home/newuser/.ssh/authorized_key
#(将key复制到一行并保存)
#chown -R newuser:newuser /home/newuser
#chmod 700 /home/newuser/.ssh
#chmod 600 /home/newuser/.ssh/authorized_key

我想这并不是绝对可怕,但是如果我们有大量的开发人员(加上我将要花费我用 SFTP 部分和目录限制来设置他们的时间),这似乎是一个巨大的痛苦。

EEA*_*EAA 11

您需要更改文件的所有权并适当设置权限。

$ chown -R newuser /path/to/home/.ssh
$ chmod 700 /path/to/home/.ssh
$ chmod 600 /path/to/home/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

为了使此过程更简单、可重复和可审计,请使用配置管理系统进行用户管理。所有广泛使用的配置管理系统(puppet、chef、ansible 等)都具有创建用户和部署密钥的能力。使用配置管理系统的一个巨大额外好处是,您还可以将配置保留在源代码控制中。