如何创建具有最少权限但足以进行 ssh 隧道的用户?

xpe*_*tor 12 ssh permissions users

我想在本地计算机上使用 SSH 隧道来绕过政府限制。我正在谈论使用 ssh 连接创建袜子代理服务器。

ssh -f -N -D 1080 admin@server1.example.com
Run Code Online (Sandbox Code Playgroud)

这现在效果很好。但我想把这个传递给其他几个人(朋友和家人)。问题是现在我正在使用管理员用户来执行此操作。我想我应该为每个人创建一个非管理员/来宾用户。

我有点担心他们是否决定正常使用 ssh 并搞乱服务器,或者他们丢失登录凭据或它落入黑客手中。

我想更进一步,将它们限制到实际上不能做任何事情或有害的程度,但具有足够的功能来运行 ssh 隧道。

那么之后我该怎么办adduser <username>

xpe*_*tor 10

经过一番挖掘和亚历克斯的重要提示,我找到了一个可行的解决方案。

创建新用户时只需添加2个参数。

sudo adduser limiteduser --shell=/bin/false --no-create-home
Run Code Online (Sandbox Code Playgroud)

--no-create-home将跳过为用户创建主目录,并--shell=/bin/false确保用户永远不会获得 shell 访问权限,无论他们是尝试本地登录还是使用 ssh 远程连接。

如果你像我一样偏执,你也可以/etc/ssh/sshd_config像这样限制它们:

Match user limiteduser
   ForceCommand /bin/false
Run Code Online (Sandbox Code Playgroud)

注意:不要尝试chroot它们,它不起作用。至少不适合我。当我尝试 chroot 它们时,我收到此错误:channel 2: open failed: connect failed: Device or resource busy。也许我没有正确设置 chroot 环境,但我认为 chroot 过于孤立,无法让隧道正常工作。

无论如何,最重要的部分是 ssh 隧道,使用上述方法可以正常工作。

ssh -N -D 1080 limiteduser@123.123.123.123
Run Code Online (Sandbox Code Playgroud)

这将成功连接并在您和服务器之间建立一条隧道,您可以使用该隧道在端口 1080 处路由流量。它甚至不需要 shell 访问。如果受限用户决定正常使用 ssh,他们会收到错误消息,并且 ssh 连接会立即关闭。