小编hon*_*nbo的帖子

带 PuTTY 且无外壳的受限用户的 SSH 隧道

所以我一直在使用 SSH 隧道来限制对内部站点或部分公共站点的访问,因为只有管理员才有 SSH 访问权限,所以我一直在使用标准的非 root/sudo 用户帐户。现在我正在扩展并试图让我当地大学的学生参与扩展他们的项目,他们将需要开始访问其中一些内部页面。

代理服务器是一个 CentOS 6.4 的机器,启用了 SELinux,除了代理之外不会运行任何其他服务。我希望最终设置一个完整的 VPN,但在这种情况下,它只是允许访问具有 IP 白名单的某些机器,而不是完整的内部网络访问。

我已经查看了使用具有 /bin/false 等内容的用户帐户设置 SOCKS 代理的所有方法,但是

A)他们假设只有一个端口或主机被转发(而在这种情况下,我有一组 VPS 实例,这些实例将在网络配置中按需更改),或

B) 正在使用常规 SSH 客户端而不是 PuTTY 之类的东西(尽管我很想强迫所有学生使用 VM 或直接安装 linux,但这不是一个选项,因为学校在他们的工程中使用 PuTTY供学生使用的硬件)。

这是我目前发现的:如果使用常规 ssh 客户端,我可以将用户 shell 设置为 /bin/false 并且用户可以在设置 SOCKS 代理时指定 -N 命令,但不幸的是对于 PuTTY 用户来说似乎不起作用(至少我无法让它工作)。

当 PuTTY 通过默认隧道选项打开隧道时,它必须打开一个外壳,该外壳在登录时立即断开连接,因为用户具有 /bin/false 外壳。如果我在 SSH 设置中指定“无外壳或命令”参数,代理选项似乎没有设置。如果我尝试在远程命令的 SSH 选项中设置代理,它仍然不会运行,除非我允许选项中的 shell 或其他命令。

我发现但不太合适的相关问题:

使用 PuTTY 和 nologin 创建 SOCKS 隧道 (这在技术上是可行的,但 shell 只是一个运行很长时间的睡眠命令,我担心它会被转义。我宁愿有一个真正的 noshell,然后是一个出于安全原因只是挂起的外壳)

https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding (这不起作用,因为它需要用户使用真正安装的 ssh ,而像 PuTTY 这样的程序将无法运行)。我还需要它们能够访问网页,但我假设我可以简单地为帐户指定 PermitTunnel 而不是只允许特定端口。

ssh 代理用户的“noshell” (根据我上面提到的关于 …

ssh centos shell putty tunnel

7
推荐指数
2
解决办法
9908
查看次数

标签 统计

centos ×1

putty ×1

shell ×1

ssh ×1

tunnel ×1