Cygwin - SSH DOMAIN 用户限制

Cygwin - SSH DOMAIN 用户限制

在我们公司,我们在每台机器上都使用 cygwin,以便能够使用 GNU make 运行我们的项目(每个人都使用 Windows 10)!我还开发了一个工具,所有员工都可以使用该工具将他们的项目从他们的(慢速)机器同步到我们的服务器(Windows Server 2012 R2),在(快速)服务器上运行 make,然后将输出同步回来。

所有这些都可以通过 cygwin ssh 连接完成!

信息:

  • 服务器上的 Cygwin(也是 ssh 服务)已在 C:\tools\cygwin 上启动并运行
  • 添加领域用户组到 cygwin 安装的 /etc/group(意味着每个人都可以使用他们的 Windows 密码登录!)
  • 将每个用户添加到 passwd 文件中。如下所示:

    u89x77:*:1447213:1049089:U-OTP01\u89x77,S-1-5-21-1054053922-559824688-2072063007-398637:/home/u89x77:/bin/bash

  • 在 fstab 文件中映射以下目录:

    1. C:/工具/cygwin /
    2. C:/项目/家(因为每个用户的主文件夹是:C:\projects\用户名
    3. C:/工具/cygwin/bin /usr/bin
    4. C:/工具/cygwin/lib /usr/lib (我不记得为什么我映射了第 3 点和第 4 点)
  • 在用户的计算机上为每个用户创建 RSA 密钥,并将其放入服务器上用户的主文件夹中。现在每个人都可以连接到服务器上的文件夹,而无需再次输入 Windows 密码(我必须这样做,因为我的同步工具与“rsync”配合使用)

我现在想要的是,将每个通过 ssh 连接到服务器的用户限制在其主文件夹 /home/'username'

例如:我们域中的用户名是 u89x77。他可以通过 ssh 正常登录,但也可以 cd 到 C:\Windows,甚至更糟的是到 C:\projects\'other username'\'absolute secret project'。而这不是我想要的。

应该阻止用户退出 C:\projects\u89x77,但当然需要查看他的文件夹内部,如 cd C:\projects\'u89x77\'u89x77 project'。


到目前为止,我尝试了很多方法,也做了很多研究。但不幸的是,没有任何方法奏效……

在服务器的 cygwin 上将以下内容添加到 /etc/sshd_config 中后,我无法再连接(已连接并立即关闭,退出状态为 255),这也不会导致我真正想要的结果。因为它会将用户限制在 C:\projects\ 而不是他们的文件夹...:

ChrootDirectory   /home
Subsystem   sftp  internal-sftp

我还阅读了一些关于将 C:\tools\cygwin 目录挂载到每个用户的主目录的内容,因为连接的用户将无法再访问 cygwin bin/bash?(在 /etc/passwd 中最后一个条目 /bin/bash...)我试过了,但仍然出现同样的错误。

我遗漏了一些东西,但是有很多选项可以设置它,我现在只需要有人的帮助......

附言:这是我的第一篇帖子,希望我没有违反很多指导原则。抱歉!

答案1

我现在想要的是,将每个通过 ssh 连接到服务器的用户限制在其主文件夹 /home/'username'

如果我理解你的问题,那么你无法在 Cygwin 中执行此操作,因为 Windows 缺少chroot。不过,你可以对sftp连接执行此操作。有关详细信息,请参阅我在 GitHub 上的 CygSSH 包:

https://github.com/Bill-Stewart/CygSSH

答案2

感谢您的帮助!答案很简单...

我只能在 Windows 的安全部分中阻止“域用户”。例如,如果每个用户都通过 ssh 使用其域用户帐户连接到服务器,则只有他才拥有对其文件夹的 Windows 权限。

默认情况下,域用户至少对新创建的文件夹具有读取权限。

相关内容