hon*_*nbo 7 ssh centos shell putty tunnel
所以我一直在使用 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” (根据我上面提到的关于 PuTTY 需要启用命令来设置 SOCKS 代理的原因,这个对 PuTTY 不起作用)
有什么建议?我很容易错过一些东西,但我不确定。
-吉姆
小智 6
刚刚看到 PuTTY 有以下选项,它可能是您正在寻找的: Connection->SSH->Don't start a shell or command
如果启用,则建立连接,控制台上不再显示,但它保持活动状态并且隧道工作正常。希望能帮助到你。
I found a solution (under a post here with no use of tags like nologin or noshell but rather a dead simple trick for windows users, but I made it work for me without a shell).
I created a batch script using the answer from this post that can run a default installation of PuTTY and setup a tunnel without executing commands that would cause the shell to disconnect:
"C:\Program Files (x86)\PuTTY\plink.exe" -v -N -D localhost:8080 proxy@remote_host
Run Code Online (Sandbox Code Playgroud)
由于这使得使用 PuTTY 的 Windows 用户现在能够访问隧道,我可以坚持使用帐户外壳作为 /bin/false
在这里发布给可能处于类似情况并解决该线程的任何人。如果有任何其他解决方案,我很想听听他们的意见!
现在,我只需要尝试使用我在所有系统上实施的基于 SSH 推送的双因素系统来完成这项工作,但是在其他一切正常工作之后,这是需要进行的工作。
-吉姆
归档时间: |
|
查看次数: |
9908 次 |
最近记录: |