如何在 SFTP 服务器上设置用户?

如何在 SFTP 服务器上设置用户?

这是为了Ubuntu 16.04,如果这很重要的话。我尝试制作标签,但它说我没有足够的声誉。

我在 Amazon AWS EC2 实例上设置了一个 SFTP 服务器,以便我们的客户可以安全地传输文件。我擅长编程,对网络概念有基本的了解,然而我的问题是,我以前从未使用过 Linux,对它没有任何实际知识。我能够使用 PuTTy 和 GUI 应用程序 WinSCP 设置服务器并远程访问它。

这对我来说很好,但现在我需要为我们的客户设置用户来远程进入服务器并放置他们的文件。

当我使用时它似乎工作正常

useradd myuser
passwd myuser

创建我的新用户。但是我想生成并添加分离钥匙对于每个用户来说,他们都需要进行身份验证,而我在包含短语~/.ssh/和authorized_keys的浏览器选项卡的海洋中迷失了方向,感到非常困惑。

我知道我可以使用 PuTTy 生成私钥/公钥对并将公钥保存到 authorized_keys 文件中。但我该怎么做呢?此外,有没有更好的方法可以做到这一点?

附加问题:从客户端发送/接收密钥的最佳做法是什么?

我设法设置了一个用户,并猜测我正确地将自己的密钥添加到了 authorized_keys 中,因为他们能够登录并为我放置一个测试文件。我最终通过电子邮件向他们发送了自己的私钥,心想如果他们搞砸了任何事情,我只需关闭该实例并启动一个新实例即可。我知道,不用别人告诉我,这是一个大忌,但我需要立即得到结果。老实说,在我研究的第三天左右,我曾短暂地考虑过为我们所有的客户做这件事,但我担心这会引发一场骚乱,有朝一日会导致我们太阳系的所有天体完美对齐,让宇宙能量直接流入我们的太阳,最终摧毁地球,所以我写了这篇文章

答案1

所以我最终弄清楚了如何为 SSH 创建和设置用户,虽然您可以像我一样通过熟悉来学习这些内容,但我认为如果有一个简单的命令列表可以查看,对其他新手会很有帮助。

首先要做的事情是打字须藤在你的命令前面给你上帝模式(以 root 身份运行命令),如果任何命令失败,使用sudo [命令]几乎总是允许您运行它。您还可以使用以下命令查看任何命令的用法和选项:

 man [command]

首先创建用户

useradd -m -d /home/myuser/
passwd myuser

这些命令可以做几件事。Useradd 将使用您指定的任何选项创建一个用户,如果您没有指定,则使用默认选项

  • -m- 如果主目录尚不存在,则创建它,还必须具有-d. 请注意不要使用大写字母-M因为该选项明确才不是创建主目录
  • -d- 明确设置用户主目录为/主页/我的用户/

通过这些命令我们创建了一个名为我的用户,设置密码(你可以使用 passwd 命令按几次回车键来设置一个空白密码),最后设置它的主目录

现在这些可能会自动创建,老实说我记不清了,但如果你打算使用 SSH 连接,你的主目录必须有一个 .ssh 目录,并且该目录必须有一个 authorized_keys 文件

 mkdir /home/myuser/.ssh/
 echo "" > /home/myuser/.ssh/authorized_keys

建立目录应该是不言自明的,但是回声做了一些疯狂的事情。首先,echo 命令只是将......什么都没有输出到标准输出(stdout,或者只是终端)。但是我们已经使用了>这里有一个特殊的重定向字符,表示“嘿,获取标准输出并将数据发送到这里”,在我们的例子中,它是一个位于 /home/myuser/.ssh/authorized_keys 的文件。访问此链接了解有关 Linux 中重定向的所有信息

现在让我困惑的是,生成密钥并将公钥放在服务器上。从终端本身执行此操作至少比使用 puttygen 弄清楚所有操作容易一千倍。

 hostname
 ssh-keygen -t rsa -C "myuser@myhost"

您需要知道您的主机名,或者您可以使用主机名命令将其输出到 stdout,您可以创建密钥对而不指定主机,但我认为您需要稍后更改它才能真正起作用,这有点麻烦,所以我们最好现在就做。您所要做的就是运行此命令并按照提示进行操作,对于这篇文章,我假设您使用了默认值。

将公钥添加到用户授权密钥文件

 cat ~/.ssh/id_rsa.pub >> /home/myuser/.ssh/authorized_keys
 echo -e "\n" >> /home/myuser/.ssh/authorized_keys

这里发生了很多事情,让我解释一下。~是一种简写,本质上意味着当前登录用户的主目录是一个用于读取文件的命令,我们将读取文件 ~/.ssh/id_rsa.pub 并以附加模式重定向标准输出到 /home/myuser/.ssh/authorized_keys。然后我们需要在文件中添加一个新行,因为每个公钥都应该在自己的行上。再次使用 echo,我们将“\n”传递到 stdout,但这次使用选项-e它表示“执行转义字符的功能,而不是输出”

最后,这一切的重点是安全,对吧?因此,让我们将用户限制在其主目录中

 chmod -R 700 /home/myuser/
 chmod 600 /home/myuser/.ssh/authorized_keys
 chown -R myuser /home/myuser/

你知道你可以使用男人命令来查看任何命令的文档,这样我就让你们自己弄清楚这些命令的作用。

最后,此时最简单的方法是使用 SFTP 客户端,登录服务器,然后将私钥复制到本地机器,然后可以通过安全电子邮件发送,或者更好的是,您的客户端可以弄清楚如何创建他们自己的密钥对并只向您发送公钥。

我希望这最终能帮助到别人

相关内容